1

我需要生成在 Windows 系统上分别创建、修改和访问的所有文件的列表。

我在forfiles这里找到了命令http://technet.microsoft.com/sv-se/library/cc753551(v=ws.10).aspx但显然这不使用创建和访问的时间戳,我也需要那些(在单独的列表)。

我也研究过使用该dir命令,但我只在帮助部分中找到了对排序而不是过滤的引用。

4

2 回答 2

5

你的问题有一些不清楚的细节,所以我做了一些假设。

下面的批处理文件创建三个单独的文本文件:created.txt、modified.txt 和accessed.txt,以及当前文件夹中的文件列表;每个列表都有 YYYYMMDDHHMMSS 格式的相应日期,后跟文件名,因此可以轻松处理。

@echo off
setlocal DisableDelayedExpansion
for %%f in (created modified accessed) do if exist %%f.txt del %%f.txt
set "folder=%CD:~2%"
for /F "skip=1 tokens=1-3*" %%a in (
    '"wmic datafile where (path='%folder:\=\\%\\') get InstallDate, LastModified, 

LastAccessed, Name"'
                                   ) do (
   for /F "delims=." %%A in ("%%a") do echo %%A %%d>> created.txt
   for /F "delims=." %%B in ("%%b") do echo %%B %%d>> modified.txt
   for /F "delims=." %%C in ("%%c") do echo %%C %%d>> accessed.txt
)

rem Process each list this way:
for /F "tokens=1*" %%a in (created.txt) do echo %%a - %%b
于 2012-04-26T03:14:39.540 回答
0

在主题中还有“日期之间” :) 那怎么样?

forfiles 不允许放置 2 个日期条件(“+”和“-”)。

我也对 wmic 中不相等的日期条件有疑问。

例如:

wmic datafile where (path='%folder:\=\\\\%\\\\' and lastmodified ^> "20120713" and lastmodified ^< "20120714") get Name

什么都不返回(我需要在 '<' 和 '>' 之前使用转义符 ('^') 来运行命令)。

wmic datafile where (path='%folder:\=\\\\%\\\\' and lastmodified ^> "20120713") get Name

仅返回之后修改的文件20120714000000(以 wmic 表示法)。

于 2012-07-14T09:05:52.903 回答