2011-05-05 42 views
4

我正在運行一個將war文件部署到特定目錄的批處理文件。但是,我想在遞歸地部署到目錄之前清空該目錄。Windows 7從命令行清空整個目錄

我發現這個腳本,應該刪除目錄中的所有文件夾和文件,但我得到這個錯誤:「%%我是在這個時候是意外的。」

FOR /D %%i IN ("C:/Program Files (x86)/Apache Software Foundation/Tomcat 6.0/abtapps/ROOT/*") DO RD /S /Q "%%i" DEL /Q "C:/Program Files (x86)/Apache Software Foundation/Tomcat 6.0/abtapps/ROOT/*.*" 

我只需要一個簡單的方法遞歸地清空我的ROOT目錄,通過修復上面的腳本或使用其他方法。必須能夠從批處理文件中執行此操作。

我運行Windows 7

SOLUTION

rmdir ROOT /s /q 
mkdir ROOT 

回答

9

您應該使用命令rmdir/S。看看這個link

+0

是的,嘗試過,但它不起作用,因爲你必須指定一個目錄,它將其刪除,並且在ROOT中對每個目錄運行這將浪費時間,我在ROOT中有超過200個目錄。 「/ s:刪除指定的目錄和所有子目錄,包括任何文件,使用/ s刪除樹。」 - 從http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds.mspx?mfr=true – UpHelix 2011-05-05 16:00:09

+0

當我運行rmdir/s它給我一個錯誤說「不正確的語法「。但我想我可以運行rmdir ROOT/s/q,然後mkdir ROOT – UpHelix 2011-05-05 16:03:54

4

我認爲你要找的是清除文件夾不要刪除它並重新創建它。這將實際上清除文件夾,因此您不必重新創建它。

CD "C:/Program Files (x86)/Apache Software Foundation/Tomcat 6.0/abtapps/ROOT" && FOR /D %i IN ("*") DO RD /S /Q "%i" && DEL /Q *.* 

一些注意事項。
從命令行運行時,只能使用單個%。雙打是批處理文件。
& &用於在同一行上運行多個命令。
* & &在這種情況下尤其重要,因爲您不想要del/q 到如果CD失敗,你會刪除對的什麼都目錄,你在開始的內容運行

+0

如果您位於不同的驅動器上,也可以使用cd/d來更改目錄。或者只是使用'pushd' /'popd',然後再次在同一個位置。 – Joey 2011-05-06 05:58:24

2

試試這個:

FORFILES/P 「文件夾」/ S/C「CMD/C RD/Q @路徑

頂替 「文件夾」 與您的文件夾名稱或驅動器盤符

例如:FORFILES/PF:/ S/C「CMD/C RD/q @path

這將通過所有子文件夾遞歸,並只刪除空文件夾。 如果您在命令行中使用它,您將收到非空文件夾的錯誤消息。如果將它放在批處理腳本中,則需要一些時間才能運行,具體取決於您擁有多少個文件夾。