2017-09-07 73 views
0

我需要一個bat文件,只要他們吃了兩個特定的critrera就會刪除特定的目錄。 1)如果目錄超過14天2)如果目錄名稱包含所有數字。命令提示符 - 刪除具有特定姓名的目錄

我有以下代碼僅處理條件1,即該目錄大於14天。我如何擴展它,然後只刪除那些基於數字的名字。 FORFILES /D -14 /C "cmd /c IF @isdir == TRUE rmdir @path /s /q"

+0

您使用的是哪個版本的Windows? – lurker

+0

我在Windows 7上測試,但最終將作爲服務器上的計劃任務運行。我不確定Windows服務器的版本,我會調查。 – LCaraway

回答

2

由於這將作爲計劃作業運行,因此您應該指定根文件夾。

您可以使用FINDSTR來驗證名稱僅由數字組成。前導和尾隨點需要匹配包含在@file中的引號。

pushd "yourRootPath" 
FORFILES /D -14 /C "cmd /c IF @isdir == TRUE echo @file|>nul findstr /x .[0-9]*.&&rd /s /q @path" 

但是,上述可能會很慢。迭代數字文件夾名稱可能會更快,然後調用FORFILES爲每個候選文件夾測試日期:

pushd "yourRootPath" 
for /f "delims=" %%F in ('"dir /b /ad|findstr /x [0-9]*"') do 2>nul forfiles /d -14 /m %%F /c "cmd /c rd /s /q @path" 
+0

@Squashman - 是的,閱讀前面有關引號的句子。 – dbenham

+0

我在嘗試第二種解決方案,因爲誰不喜歡效率。它給我'%% F在這個時候是意外的。' – LCaraway

+0

@LCaraway - 我寫了代碼,假設它將用於批處理腳本中,這需要加倍百分比。如果直接在命令行上使用,則將所有'%% F'更改爲'%F'。 – dbenham