
我想刪除同一目錄的幾個子目錄。這些目錄的名稱中前三個字元為“tmp”。這是行不通的:
C:\Documents and Settings\rajesh\Local Settings\Temp> rmdir tmp*
答案1
該rmdir
指令不接受通配符。您可以使用一個小循環for
來實現相同的目標。這將rmdir
多次運行該命令 - 每個與給定模式匹配的文件/資料夾運行一次:
for /D %f in (tmp*) do rmdir "%f"
- 請注意,如果資料夾不為空,並且您希望它遞歸到其中,則需要
/S
在末尾添加。 - 如果您想阻止確認檢查,
/Q
也請新增。 - 如果您想阻止它列印出每行的命令,請
@
在命令之前新增。 - %f 周圍的引號將允許刪除帶有空格的資料夾。
例如,使用所有這些選項,您將擁有:
for /D %f in (tmp*) do @rmdir "%f" /Q /S
若要查看完整用法,請輸入rmdir /?
。
答案2
一個好的、安全的通用方法是建立一個包含要刪除的目錄的文件,dir /ad > blah
然後檢查該文件是否包含您想要的內容,然後創建一個 for 命令來回顯文件的每一行。 for /f %a in (blah) do @echo %a
然後修改你想要的命令,例如這一行將 rmdir 放在文件每行的開頭for /f %a in (blah) do @echo rmdir %a
或末尾,將 /q /s 添加到已經存在的 rmdir %a 中,即使用 @echo rmdir %a /q /s。然後一旦確定了它將運行的命令,就刪除 echo 部分,以便for /f %a in (blah) do @rmdir %a /q /s
另一種方法也是使用建立列出要刪除的子目錄的檔案的啟動方法。然後在檔案上使用 sed 將子目錄 x 替換為 rmdir x /q /s。
所以如果你有一個名為 blah.txt 的檔案。 sed "s/.*/rmdir \0 \/q\/s/" blah >f
type f
看到它有所有命令。刪除每個子目錄。如果您對它感到滿意並且想要執行它,可以將 f 重新命名為 f.bat 並執行它。