在命令提示字元下刪除多個具有共同前綴的目錄

在命令提示字元下刪除多個具有共同前綴的目錄

我想刪除同一目錄的幾個子目錄。這些目錄的名稱中前三個字元為“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 並執行它。

相關內容