Допустим, на D:
диске есть какая-то папка :
D:\Air
D:\Abonden
D:\All
D:\Whatever
Я хочу удалить все папки, начинающиеся с «A» (включая все подпапки и файлы). Я попробовал эту команду:
rmdir D:\A* /s /q
Я получаю ошибку, хотя :(
Неверный синтаксис имени файла, имени каталога или метки тома.
Команда del
работает с *
, но мне нужно также удалить папки.
Есть ли способ добиться этого с помощью rmdir
команды?
windows
command-line
batch
сердар
источник
источник
Ответы:
Используйте это, чтобы проверить, хотя:
Это выведет команды для запуска в командную строку и позволит вам увидеть, что происходит.
Имейте в виду, что это также будет искать подпапки, такие как "C: \ temp \ jjj \ aaa" и удалит папку aaa. Если вы хотите, чтобы он просто просматривал папки верхнего уровня «C: \ temp \ aaa», то удалите команду
"/s"
из команды.Ключ к этому - A *, где вы бы указали строку поиска. Это будет принимать подстановочные знаки, такие как
aaa*
,aaa*
и,*aaa*
если вы хотите.источник
for /f %%i in ('dir /a:d /s /b A*') do rd /s /q %%i
Удаление папок с использованием подстановочных знаков
rmdir
/rd
Команды в одиночку не поддерживает подстановочные символы (то есть,*
и?
). Вы можете обойти это ограничение, заключив его вfor
цикл.Пример использования
Примечание. При удалении файлов и папок может потребоваться заменить
rd
командуecho
первой. Таким образом, вы можете гарантировать, что все, что не должно быть удалено, действительно будет.Несколько моделей
Чтобы удалить несколько папок, соответствующих разным шаблонам, синтаксис не слишком отличается. Как правильно заметил @dbenham, достаточно однострочной команды. Вы также можете указать разные пути:
Бонус - проверка существования папки
Если вы хотите проверить, существуют ли определенные папки, вы можете использовать следующую команду:
дальнейшее чтение
источник
FOR /D
иFOR /D /R
командами. Просто используйтеin( "A*" "B*" "C?D" )
./R
опция, потому что подпапка, соответствующая маске, может находиться под родительским файлом, который этого не делает.Как никто еще не рассказал ОП о файлах ?!
forfiles /P D:\ /M A* /C "cmd /c if @isdir==TRUE rmdir /s /q @file"
источник
for /d
как в ответе and31415, и чище, и эффективнее.Ответ adn31415 правильный, но ломается, если вы поместите это в пакетный или cmd-скрипт. Я часами колотил головой, пока не понял, как ты это используешь.
В командном окне DOS:
В пакетном или cmd скрипте:
Если вы хотите поместить его в файл «.bat» или «.cmd», вам необходимо удвоить символы «%».
источник