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

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

2 ответа2

3

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

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

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

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

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

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

0

Хороший общий способ - создать файл из каталогов, которые вы хотите удалить. 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 >f type f увидеть, что в нем есть все команды. удалить каждый подкаталог. если вы довольны этим, вы хотите выполнить его, вы можете переименовать f в f.bat и выполнить его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .