Удалите несколько каталогов с общим префиксом в командной строке

Я хочу удалить несколько подкаталогов одного и того же каталога. В каталогах есть "tmp" в качестве первых трех символов в их имени. Это не работает:

C:\Documents and Settings\rajesh\Local Settings\Temp> rmdir tmp*

2 ответа

Решение

rmdir Команда не принимает подстановочные знаки. Вы можете использовать немного for Цикл для достижения той же цели. Это запустит rmdir команда несколько раз - один раз для каждого файла / папки, которая соответствует заданному шаблону:

for /D %f in (tmp*) do rmdir %f

  • Обратите внимание, что если папки не пусты, и вы хотите, чтобы они в них вернулись, вам нужно добавить /S в конце.
  • Если вы хотите запретить проверку подтверждения, добавьте /Q также.
  • Если вы хотите предотвратить вывод команды на каждую строку, добавьте @ перед командой.

Например, со всеми этими параметрами у вас будет:

for /D %f in (tmp*) do @rmdir %f /Q /S

Чтобы увидеть полное использование, введите rmdir /?,

Хороший безопасный способ - создать файл из каталогов, которые вы хотите удалить. 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. А затем, когда все в порядке, с какими командами он будет работать, удалите часть эха так, for /f %a in (blah) do @rmdir %a /q /s

другой способ также использует этот начальный метод создания файла со списком подкаталогов для удаления. Таким образом, каждая строка файла может быть изменена, чтобы прочитать команду для удаления этого подкаталога. Затем используйте sed в файле, чтобы заменить подкаталог x на rmdir x /q /s.

Так что если у вас есть файл с именем бла. sed "s/.*/rmdir \0 \/q\/s/" blah >ftype f Видите, у него есть все команды. удалить каждый подкаталог. если вы довольны этим, вы хотите выполнить его, вы можете переименовать f в f.bat и выполнить его.

Другие вопросы по тегам