用批次檔案刪除n天前的檔案

排程自動備份常常是每個 IT 工程師在維護系統時固定做的事情,但我們的儲存空間一定是有限的不管你是用 NAS 或者是 SAN,當要備份的檔案大到一定的程度時,永遠嫌不夠,既然備份都是排程備份,那麼刪檔案是否也可以自動刪呢?在 LINUX 的文字模式下是可以的,windwos 呢?,答案也是肯定的,參考下列命令指令語法做成一個 bat 檔,讓 OS 自動來刪檔案,把時間花在更有意義的事情上吧。


Windows 2000/XP:

Windows 2000及XP並未內建Forfiles,可以直接下載for win2k/xp專用的檔案來使用,forfiles命令能夠查找滿足指定條件的檔案,命令用法如下:

forfiles -p”<路徑>” -d"<天數>" -c"<執行命令>"

範例: forfiles -p"d:\backup" -s -m"*.bak" -d"-5" -c"cmd /c del @FILE"

上述的範例為指定刪除backup目錄及子目錄含有.bak檔五天前的檔案

※注意:@FILE必需為大寫


Windows 7/2003/2008:

Windows 7及Windows server 2003/2008已內建forfiles程式,命令用法如下:

forfiles /p”<路徑>” /d"<天數>" /c"<執行命令>"

範例: forfiles /p d:\backup /s /m *.bak /d -5 /c "cmd /c del @file"

※注意:參數必須為斜線( / ),與windows 2000/xp不同,@file無大小寫區分

另外如何驗證?我們可以利用檔案更改日期的免費軟體自行新增三個 TXT 檔案,然後更改日期,在執行以上命令,就可以得知檔案是否有被刪除掉。
http://download.ithome.com.tw/id/10830

留言

這個網誌中的熱門文章

c語言-關於#define用法

CMD常用網管指令

使用windows CMD 時間自動校正