我需要生成在 Windows 系统上分别创建、修改和访问的所有文件的列表。
我在forfiles
这里找到了命令http://technet.microsoft.com/sv-se/library/cc753551(v=ws.10).aspx但显然这不使用创建和访问的时间戳,我也需要那些(在单独的列表)。
我也研究过使用该dir
命令,但我只在帮助部分中找到了对排序而不是过滤的引用。
我需要生成在 Windows 系统上分别创建、修改和访问的所有文件的列表。
我在forfiles
这里找到了命令http://technet.microsoft.com/sv-se/library/cc753551(v=ws.10).aspx但显然这不使用创建和访问的时间戳,我也需要那些(在单独的列表)。
我也研究过使用该dir
命令,但我只在帮助部分中找到了对排序而不是过滤的引用。
你的问题有一些不清楚的细节,所以我做了一些假设。
下面的批处理文件创建三个单独的文本文件: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
在主题中还有“日期之间” :) 那怎么样?
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 表示法)。