2015-09-25 64 views
1

我有一個文件夾,它存儲了許多日誌文件和子文件夾。我想刪除除1個名爲Excel_Export的文件夾以外的所有文件和子文件夾,該文件夾不應被刪除。我使用下面的命令在我的批處理腳本:如何刪除.bat腳本中除1文件夾以外的文件夾中的所有文件和子文件夾?

move D:\ABC\Delete_Test\Retain_Folder D:\ABC 
rd /s /q "D:\ABC\Delete_Test" 
move D:\ABC\Retain_Folder D:\ABC\Delete_Test 

然而,此腳本運行後,連「Retain_Folder」是越來越刪除,除了裏面的文件。我在上述命令中做錯了什麼? 另外,有沒有更好的方法來做到這一點?

注意: 所有其他文件夾的名稱(即將被刪除)以'$'符號開頭。

回答

0

這是未經測試的 - 它刪除d:\abc中的所有正常文件,然後刪除在同一文件夾中以$開頭的所有文件夾。

@echo off 
del "d:\abc\*.*?" 
for /d %%a in ("d:\abc\$*") do rd /s /q "%%a" 
+0

這工作得很好..非常感謝.. – soorakarthik

0

您的想法可能是完成您的任務的最有效(最快)的方式,除非您有一個小錯誤。您的RD命令將刪除Delete_Test文件夾,因此在將Retain_Folder移回其所屬的位置之前,必須重新創建該文件夾。當您的文件夾爲move時,您也可能希望將輸出重定向到空 - 您不需要看到移動消息。

move "D:\ABC\Delete_Test\Retain_Folder" "D:\ABC" >nul 
rd /s /q "D:\ABC\Delete_Test" 
md "D:\ABC\Delete_Test" 
move "D:\ABC\Retain_Folder" "D:\ABC\Delete_Test" >nul 

如果你知道你開始之前D:\ABC\Retain_Folder已經不存在,或者如果它確實存在,那麼它必須是空的這一戰略只有正常工作。

+0

非常感謝您的回覆.. – soorakarthik

相關問題