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

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

Я хочу удалить несколько подкаталогов одного и того же каталога. Каталоги имеют "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. sed "s/.*/rmdir \0 \/q\/s/" blah >f type f Посмотрите, в нем есть все команды для удаления каждого подкаталога. Если вас все устраивает и вы хотите его выполнить, вы можете переименовать f в f.bat и выполнить его.

Связанный контент