我想创建一个Windows批处理脚本,该脚本允许仅在修改日期为特定月份和特定年份的情况下,才能将给定目录的文件名写入文本文件。
例如,如何打印在2018年5月C:\ tmp目录中修改的所有文件?
此刻我写了这条指令:
FORFILES /P C:\tmp /C "cmd /c if @isdir==FALSE set fdate=@fdate& (call echo @path) >> file.txt" >NUL 2>&1
我应该添加以下条件:
if %fdate:~3,2%==05 if %fdate:~6,4%==2018
答案 0 :(得分:0)
我决定删除我的评论,并发布相关部分作为答案:
如果您希望将任务限制为使用forfiles,则可以从batch-file (将file.txt
写到与您的批处理文件):
@CD /D "C:\tmp"
@FORFILES /D 01/05/2018 /C "cmd /c if @isdir==FALSE FORFILES /D -31/05/2018 /M @file /C 0x22cmd /c if @isdir==FALSE Echo @fdate @ftime @path0x22" 2>nul >>"%~dp0file.txt"
如果您想提高命令效率,可以使用robocopy,(以下将file.txt
写入当前目录):
@For /F "Tokens=*" %%A In ('RoboCopy "C:\tmp" NULL /L /MaxAge:20180501 /MinAge:20180531 /NDL /NJH /NJS /NC /NS /TS')Do @Echo(%%A>>"file.txt"
仅需要For
循环即可从输出中删除前导空格填充,如果您对此不关心,则可以简单地使用:
@RoboCopy "C:\tmp" NULL /L /MaxAge:20180501 /MinAge:20180531 /NDL /NJH /NJS /NC /NS /TS>"file.txt"