Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Windows 批次刪除多層巢狀目錄:forfiles 與 for /r 兩大實戰指令

編輯:系統常見問題解答

場景:D:\clu_1 下有 99 個子目錄(0-98),每個再含 25 個子目錄(0-24),再下一層為日期命名目錄(如 20140521),最底層為 ZIP 檔。總佔用 7 TB,需按條件刪除。

方法一:按檔案時間刪除最底層 ZIP(保留目錄結構)

forfiles /p D:\clu_1 /s /m *.zip /d -2014/06/08 /c "cmd /c del /q /s @path"
  • /p 起始路徑;/s 遞迴;/m *.zip 比對副檔名;/d -2014/06/08 早於該日期(含當天)。
  • 缺點:僅刪除檔案,空目錄保留,需額外清理。

方法二:按目錄名稱模式刪除整棵子樹(含檔案與目錄)

刪除 5 月全部資料(目錄名以 201405 開頭)

for /r D:\clu_1 /d %i in (201405*) do rmdir /q /s "%i"

刪除 6 月 8 日資料(目錄名以 20140608 開頭)

for /r D:\clu_1 /d %i in (20140608*) do rmdir /q /s "%i"
  • /r 遞迴;/d 針對目錄;%i 迴圈變數;rmdir /q /s 安靜模式遞迴刪除目錄樹。
  • 注意:目錄數龐大時,指令下達後需等待數秒至數分鐘才見回應,請耐心等待。

補充:PowerShell 更強大的替代方案

# 刪除 2014-06-08 前的所有 .zip
Get-ChildItem D:\clu_1 -Recurse -Filter *.zip | Where-Object { $_.LastWriteTime -lt '2014-06-08' } | Remove-Item -Force

# 刪除名稱符合 201405* 的目錄樹
Get-ChildItem D:\clu_1 -Recurse -Directory | Where-Object { $_.Name -like '201405*' } | Remove-Item -Recurse -Force

PowerShell 物件管線支援更複雜的篩選條件(如大小、屬性、自訂邏輯),建議大規模清理作業優先使用。

Copyright © Windows教程網 All Rights Reserved