我有一個腳本會從嵌套文件結構中刪除所有超過31天的文件。使用批處理文件刪除子文件夾中的所有空文件夾?
在某些時候,它會留下空文件夾,我正在尋找一種方法來刪除它們,最好保留比31天更新的文件夾。鑑於rd FolderName
不會刪除文件夾,如果它不是空的,我可以用它來刪除文件夾。問題是,如果我這樣做,它不會刪除所有空文件夾,只有樹中最深的文件夾。如果我可以將文件的名單反轉給我,它就會起作用。如果這不可能,還有另一種方法嗎?
注意:rd/s不會刪除嵌套的文件夾,但也會刪除其文件。如果文件夾不爲空,我不想刪除該文件夾。
這裏是我的腳本:
@echo off
cd /d "C:\MyPath"
:: remove files that are older than 31 days (retention period)
forfiles /s /d -31 /c "cmd /c if @isdir==FALSE del @relpath")
:: attempt to remove folders (will fail if the folder is not empty.)
forfiles /s /d -31 /c "cmd /c if @isdir==TRUE rd @relpath"
以上腳本將只刪除最深的文件夾。我想我可以連續執行8次文件,但這是對資源的嚴重浪費。
'SORT'有'/ r'選項... – Magoo
@Magoo有趣。現在我必須弄清楚如何使用我的腳本工作。 forfiles | sort/r的作品,但我如何執行一個命令呢?如果你有答案,隨時給我寫一個答案,我會很樂意給你一票和檢查。 :) – LPChip
'for/f「delims =」%% a in('dir/s/b/ad「C:\ mypath」^ | sort/r')do echo %% a'會產生一個基本的目錄列表目錄的子目錄,然後對其進行反向排序,以便任何目錄名顯示*在列表中的子目錄之後。 – Magoo