2016-02-08 144 views
1

我一直在嘗試編寫一個批處理文件,該文件刪除早於x天數的文件。我有一個備份目錄E:\Backup2,其中包含多個子文件夾AlrescoPostgresSybase在Windows中使用批處理文件刪除比x天更早的文件

這些子文件夾中包含的文件不同的內部結構,但我不認爲這應該不會影響腳本,我只需要通過在Backup2目錄中的所有文件看,如果是年齡超過x天然後刪除該文件。

到目前爲止,我有以下的,但我不能得到它的工作:

FORFILES /P "E:\Backup2" /S /D -2 /C "CMD DEL /F /Q @PATH" 

其中2定義文件必須怎麼老在天,纔可以被刪除。

當我在CMD中執行命令時,所有文件都保留,沒有報告任何錯誤。

有趣不過的是,當我輸出到一個日誌文件,它報告其中第一個文件所在的目錄..

當我第一次運行日誌文件中報告E:\Backup2\Alfresco\25072015但是當我移動的命令將日誌文件複製到根目錄,並重新運行comman報告的日誌文件E:\Backup2,這表明該命令正在查找它需要刪除並斷開的第一個日誌文件。

+0

[相關](https://xkcd.com/1168)。 – Neil

回答

1

從文檔中發現here他們有這些例子:

Examples: 

Delete the testfile if it is is 5 days old or older: 
C:\> forfiles /m testfile.txt /c "cmd /c Del testfile.txt " /d -5 

Find .xls file that were last modified 30 days ago or older 
C:\> FORFILES /M *.xls /C "cmd /c echo @path was changed 30 days ago" /D -30 

List the size of all .doc files: 
C:\> FORFILES /S /M *.doc /C "cmd /c echo @fsize" 

比起你的代碼似乎打電話時錯過/ C CMD德爾,所以你的代碼應該是:

FORFILES /P "E:\Backup2" /S /D -2 /C "CMD /c DEL /F /Q @PATH" 
+0

請注意,調用CMD/c會爲forfiles匹配的每個時間/文件創建一個新線程 – Melis

相關問題