星期一, 5月 18, 2020

forfiles Command 教學 | 教你使用forfiles 尋找及刪除過期的檔案

如何使用 Windows "forfiles" Command

前言

工作上你可能會碰到需要刪除過期檔案的狀況,例如定期產生的一些 log檔。當檔案大到一個數量或大小時,我們會想定期把它清理,避免佔用太多空間影響系統。

Windows剛好有一個 Command 叫「forfiles」,在這邊我們就使用這個指令來尋找過期的檔案,並刪除它。

delete for expire files

 

參考如下:

▼使用說明

開啟 Windows 命令提示字元 > 輸入 > forfiles /?

可以找出該 Command 使用方式

forfiles-help1

forfiles-help2

📌 實作範例

▼範例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"

forfiles-sample1

從下圖資料夾路徑 d:\TONY_data 可以看出,會遞迴往下搜尋,因為 mp3檔並不在該層。

forfiles-sample-folder

▼範例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"

forfiles-sample2

▼範例3.當要刪除的檔案所在目錄路徑太長時,你可以這麼做?

例如目錄為 C:\Documents and Settings\user\Local Settings\Temp

forfiles-sample

▼微軟範例參考.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
Tony's 挨踢日記-刪除N天前的資料夾

延伸閱讀

👉 【Windows Command 教學】"echo" 指令如何使用?

👉 Robocopy指令教學 | 使用Windows內建的Robocopy指令讓你快速備份和同步資料。

👉 使用「dsquery Command」來查詢及匯出 AD使用者帳號。

~若您覺得本篇有幫助到你,歡迎您訂閱或分享出去~

沒有留言:

張貼留言