用批次檔刪除舊(n天前)檔案

因為之前寫了一個批次檔來備份資料庫,但日子久了,檔案越來越多,越來越多,越來越多…

剛好系統是使用 windows 7,可以利用 forfiles 指令來尋找符合條件的檔案並執行其他動作,若是系統是 windows 2000/Xp,這個方法就不適用了…
下面,是 forfiles 的用法--

forfiles [/p pathname] [/m searchmask] [/s] [/c command] [/d [+ | -] {yyyy/mm/dd | dd}]

參數清單:
/p 表示要開始搜尋檔案的路徑,預設資料夾是目前的目錄,另不可在目錄名後加斜線。
/m 根據關鍵字搜尋檔案,預設是 *。
/s 指示 forfiles 搜尋子目錄。類似 “dir /s”。
/c 對每個尋找到的檔案要執行的命令,命令字串要用雙括號包起來,預設的命令是 “cmd /c echo @file”。
下列變數可以使用於命令字串--
@file 傳回檔案的名稱。
@fname 只傳回檔案的名稱,不傳回副檔名。
@ext 只傳回檔案的副檔名。
@path 傳回檔案的完整路徑。
@relpath 傳回檔案的相對路徑。
@isdir 如果檔案類型是目錄的話,傳回 “true”,如果是檔案的話,傳回 “false”。
@fsize 傳回檔案的大小,單位是位元組。
@fdate 傳回檔案上次修改的日期。
@ftime 傳回檔案上次修改的時間。
/d 指定日期或天數,用於比較檔案的最後修改日期是否符合條件。

範例:
刪除 c:\temp 目錄及子資料夾內 7 天前所有附檔名為 log 的檔案。
forfiles /p c:\temp /s /m *.log /d -7 /c “cmd /c del @FILE”

發佈留言

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料