batch file以recursion方式删除N个天数以前的文件夹中的文件

我正在使用batch file来删除以.snp结尾超过180天的所有文件。 下面的代码用于删除以根文件夹下的.snp结尾的所有文件

C:\ Program Files \ Snapshots

但我最近发现,在快照文件夹中有按date组织的文件夹

“1-10-2014,12-20-2014,10-15-2014等”。

而下面的代码行不能recursionsearch每个目录,因此不能删除。

我应该对这段代码做什么修改,让它recursionsearch根文件夹中的文件夹并删除大于180天的文件?

 forfiles /M *.snp /P "C:\Program Files\Snapshots" /S /D -180 /C "cmd /c del /F /Q @path" 

Solutions Collecting From Web of "batch file以recursion方式删除N个天数以前的文件夹中的文件"

没有/ D(日期)它为子文件夹工作

 forfiles /M *.txt /P "C:\hlpme" /S /C "cmd /c del /f /q @path 

但是你显然希望日期在CMD那里

 forfiles /D -180 /M *.txt /P "C:\hlpme" /S /C "cmd /c del /f /q @path 

路径名之前的/ D选择180天前已更改的所有文件

最高可靠性的最佳选择是将For命令的优势与FORFILES命令结合起来,使每个人都能做到最好。

 Set str_Ext=*.snp Set int_Age=-180 For /R "%~dp0" %%D IN (.) DO ( For /F "usebackq tokens=*" %%F IN (`FORFILES /P "%%~D" /m %str_Ext% /D %int_Age% 2^>nul`) DO ( Call :s_Del_File "%%~D" "%%~F" ) ) Goto :EOF :s_Del_File Set "str_DIR=%~1" Set "str_FIL=%~2" Set "str_DIR=%str_DIR:~0,-1%" DEL /F/Q/A "%str_DIR%%str_FIL%" Goto :EOF 

在第二个FOR命令中,反引号(〜键)包含FORFILES命令,并使用控制台输出调用批处理子例程来删除指定的文件。

文件夹和文件名称中的空格不会减慢这种野兽,Set命令周围的双引号[“]将允许进程使用文件夹和其中包含圆括号的文件或其他外来但允许的字符。