簡體   English   中英

批處理文件以遞歸方式刪除超過N天的文件夾中的文件

[英]Batch file to recursively delete files in a folder older than N number of days

我現在使用批處理文件刪除以.snp結尾的所有超過180天的文件。 下面的代碼用於刪除根文件夾下以.snp結尾的所有文件

C:\\ Program Files \\ Snapshots

但我最近發現在Snapshots文件夾中有按日期組織的文件夾

“1-10-2014,12-20-2014,10-15-2014等......”

並且下面的代碼行無法遞歸搜索每個目錄,因此不會刪除。

我應該對此代碼進行哪些更改,以便遞歸搜索根文件夾中的文件夾並刪除超過180天的文件?

forfiles /M *.snp /P "C:\Program Files\Snapshots" /S /D -180 /C "cmd /c del /F /Q @path"

沒有/ D(日期)它適用於子文件夾

forfiles /M *.txt /P "C:\hlpme" /S /C "cmd /c del /f /q @path

但你顯然希望日期在CMD中

forfiles /D -180 /M *.txt /P "C:\hlpme" /S /C "cmd /c del /f /q @path

Pathname之前的/ D選擇超過180天前已更改的所有文件

最高可靠性的最佳選擇是將For命令的強度與FORFILES命令相結合,以允許每個人執行他們最擅長的操作。

Set str_Ext=*.snp
Set int_Age=-180
For /R "%~dp0" %%D IN (.) DO (
    For /F "usebackq tokens=*" %%F IN (`FORFILES /P "%%~D" /m %str_Ext% /D %int_Age% 2^>nul`) DO (
        Call :s_Del_File "%%~D" "%%~F"
    )
)
Goto :EOF
:s_Del_File
Set "str_DIR=%~1"
Set "str_FIL=%~2"
Set "str_DIR=%str_DIR:~0,-1%"
DEL /F/Q/A "%str_DIR%%str_FIL%"
Goto :EOF

在第二個FOR命令中,反引號(〜鍵)包含FORFILES命令,並使用控制台輸出調用批處理子例程來刪除指定的文件。

文件夾和文件名中的空格不會減慢此動作速度,並且Set命令周圍的雙引號[“]將允許進程處理其中包含括號或其他奇特但允許的字符的文件夾和文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM