如何使用 Windows "forfiles" Command
前言
工作上你可能會碰到需要刪除過期檔案的狀況,例如定期產生的一些 log檔。當檔案大到一個數量或大小時,我們會想定期把它清理,避免佔用太多空間影響系統。
Windows剛好有一個 Command
叫「forfiles」,在這邊我們就使用這個指令來尋找過期的檔案,並刪除它。
參考如下:
▼使用說明
開啟 Windows 命令提示字元 > 輸入 > forfiles /?
可以找出該 Command 使用方式
📌 實作範例
▼範例1.找出7天前的檔案
尋找 d:\Tony_data資料夾下,所有檔案名稱開頭為181106_ 的mp3檔案,而且為7天前的檔案,並輸出檔案名稱。
C:\>forfiles /p d:\TONY_data\ /s /m 181106_*.mp3 /d -7 /c "cmd /c echo @file the mp3 file is over 7days"
從下圖資料夾路徑 d:\TONY_data 可以看出,會遞迴往下搜尋,因為 mp3檔並不在該層。
▼範例2.刪除指定日期前的檔案
尋找 C:\Windows\Logs\CBS資料夾下所有CbsPer開頭的log檔且日期為2020/01/05前,並刪除log檔。
C:\>forfiles /p C:\Windows\Logs\CBS\ /s /m CbsPer*.log /d -2020/01/15 /c "cmd /c del @file"
▼範例3.當要刪除的檔案所在目錄路徑太長時,你可以這麼做?
例如目錄為 C:\Documents and Settings\user\Local Settings\Temp
▼微軟範例參考.cmd部分注意要加" "
列出 C 磁片磁碟機上的所有批次檔,請輸入:
forfiles /p c:\ /s /m *.bat /c cmd /c echo @file is a batch file
列出 C 磁片磁碟機上的所有目錄,請輸入:
forfiles /p c:\ /s /m *.* /c cmd /c if @isdir==TRUE echo @file is a directory
列出目前目錄中至少一年以前的所有檔案,請輸入:
forfiles /s /m *.* /d -365 /c cmd /c echo @file is at least one year old.
若要顯示目前目錄中,2007年1月1日以前的每個檔案的文字檔已過期,請輸入:
forfiles /s /m *.* /d -01/01/2007 /c cmd /c echo @file is outdated.
若要以欄格式列出目前目錄中所有檔案的副檔名,並在擴充功能前面加上索引標籤,請輸入:
forfiles /s /m *.* /c cmd /c echo The extension of @file is 0x09@ext
參考網站來源
⏩ 微軟Docs-forfiles Command | 微軟Docs-forfiles Command 英文
⏩ Windows利用batch刪除過期檔案和空資料夾
⏩ iThome 自行刪除超過7日的資料夾連檔案
⏩ Technote
延伸閱讀
👉 【Windows Command 教學】"echo" 指令如何使用?
👉 Robocopy指令教學 | 使用Windows內建的Robocopy指令讓你快速備份和同步資料。
👉
使用「dsquery Command」來查詢及匯出 AD使用者帳號。