2010-04-22 125 views
1

(使用Windows 2000和2003服務器)如何使用FORFILES(或類似)刪除文件日期早於n天,但總是留下最近的n個

我們使用forfiles.exe刪除舊的備份相比.zip文件n天,和它的偉大工程(命令有點像下圖)

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

如果一個.zip文件創建失敗,我想確保我們不0 .zip文件結束在5天后進行備份。因此,命令必須是:

「刪除任何超過5天,但始終保持最近的5個文件,即使他們自己都超過5天的」

我們可以用forfiles.exe或另一種解決方案(儘管任何簡單的單線程都比腳本文件更適合)。

謝謝!

回答

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

將刪除除5個最新的文件之外的所有文件。我無法找到所有文件都比5天更新的單行文件,因此您可能需要使用更復雜的邏輯。

/b 

僅列出文件名,而無需額外的信息

/O-D 

排序反向日期順序列表。

/A-D 

過濾器,只顯示非目錄文件

skip=5 

跳過5條第一線(5級最新的)。

+0

嘿,謝謝Matst ...我會試試看。 – 2010-05-11 07:40:33

+0

這是完美的Matst ...我只是在/ A-D後面添加了一個文件掩碼,它完成了這項工作。謝謝! – 2010-05-21 16:54:32

相關問題