我需要生成在Windows系统上分别创建,修改和访问的所有文件的列表。
我在http://technet.microsoft.com/sv-se/library/cc753551(v=ws.10).aspx找到了forfiles
命令,但显然这并没有使用创建和访问的时间戳,我也需要这些(在单独的列表中)。
我也研究过使用dir
命令,但我只找到了对帮助部分中的排序和过滤的引用。
答案 0 :(得分:5)
你的问题有一些不清楚的细节,所以我做了一些假设。
下面的批处理文件创建了三个独立的文本文件:created.txt,modified.txt和accessible.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
答案 1 :(得分:0)
在主题中还有“日期之间”:)那怎么样?
forfiles不允许放置2个日期条件('+'和' - ')。
我也遇到了wmic不一致的日期条件问题。
例如:
wmic datafile where (path='%folder:\=\\\\%\\\\' and lastmodified ^> "20120713" and lastmodified ^< "20120714") get Name
什么都不返回(我在'&lt;'和'&gt;'之前需要一个转义('^')来运行命令。)
wmic datafile where (path='%folder:\=\\\\%\\\\' and lastmodified ^> "20120713") get Name
仅返回20120714000000
之后修改的文件(以wmic表示法)。