2.11 查找指定日期时间之后修改过的文件
http://scz.617.cn/windows/201607271351.txt
A: scz 2016-07-27 13:51
$ forfiles.exe /?
forfiles [/p pathname] [/m searchmask] [/s] [/c command] [/d [+|-]{yyyy/mm/dd|days}]
/p pathname
起始目录,默认是当前目录(.)
/m searchmask
文件名通配符,默认是*。
注意,*与*.*不等价。
大小写不敏感
/s
递归遍历子目录
/c "command"
针对匹配项执行命令,必须使用双引号,默认命令是"cmd /c echo @file"
在command中可以使用下列变量
@file 文件名
@fname 无扩展名的文件名部分
@ext 文件名的扩展名部分
@path 绝对路径
@relpath 相对路径
@isdir 匹配项是目录时返回TRUE,否则返回FALSE,TRUE和FALSE必须大写
@fsize 文件大小
@fdate 文件最后修改日期
@ftime 文件最后修改时间
command中可以使用0xHH,比如0x09表示TAB
/d date
缺省使用"+"
-yyyy/mm/dd
表示文件最后修改日期位于指定日期之前(<=)
+yyyy/mm/dd
表示文件最后修改日期位于指定日期之后(>=)
-days
+days
相比今天进行加减,有效范围是[0,32768]
示例:
forfiles /p c:\windows /s /m dns*.* forfiles /s /m *.txt /c "cmd /c type @file | more" forfiles /p c:\ /s /m *.bat forfiles /d -30 /m *.exe /c "cmd /c echo @path 0x09 was changed 30 days ago" forfiles /d 2001/01/01 /c "cmd /c echo @fname is new since Jan 1st 2001" forfiles /d +2016/7/27 /c "cmd /c echo @fname is new today" forfiles /m *.exe /d +1 forfiles /s /m *.doc /c "cmd /c echo @fsize" forfiles /m *.txt /c "cmd /c if @isdir==FALSE notepad.exe @file"