如何使用forfiles(或类似的)删除n天以前的文件,但总是离开最近的n

(使用Windows 2000和2003服务器)

我们使用forfiles.exe来删除n天以前的备份.zip文件,而且效果很好(命令有点像下面)

forfiles -p"C:\Backup" -m"*.zip" -c"cmd /c if @ISDIR==FALSE del \"@PATH\@FILE\"" -d-5 

如果.zip文件无法创build,我想确保在5天之后,备份中没有0个.zip文件。 因此,该命令需要是:

“删除超过5天的任何东西,但总是保留最近的5个文件,即使它们本身大于5天”

我们可以使用forfiles.exe或其他解决scheme(尽pipe任何一个简单的单行程序总是优于脚本文件)。

谢谢!

 FOR /F "skip=5 delims=" %%G IN ('dir /b /OD /A-D') DO del "%%G" 

将删除除最新的5个以外的所有文件。 我无法找到所有文件都比5天更新的文件,因此您可能需要使用更复杂的逻辑。

 /b 

仅列出没有额外信息的文件名

 /OD 

按逆向日期顺序排列列表。

 /AD 

过滤器只显示非目录文件

 skip=5 

跳过5个第一行(5个最新的行)。