Я хочу удалить несколько подкаталогов одного и того же каталога. Каталоги имеют "tmp" в качестве первых трех символов в их имени. Это не работает:
C:\Documents and Settings\rajesh\Local Settings\Temp> rmdir tmp*
Команда 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 >f
type f
увидеть, что в нем есть все команды. удалить каждый подкаталог. если вы довольны этим, вы хотите выполнить его, вы можете переименовать f в f.bat и выполнить его.