Использование подстановочных знаков с помощью команды rmdir или rd

Предположим, что есть папка в диске D: :

 D:\Air D:\Abonden D:\All D:\Whatever 

Я хочу удалить все папки, начиная с «A» (включая все подпапки и файлы). Я пробовал эту команду:

  • Переменные в пакетном файле не устанавливаются, когда внутри IF?
  • Как сделать 7-zip сделать целую кучу папок
  • Как отключить вывод 7-Zip?
  • Что на самом деле контролирует настройка MySQL max_allowed_packet?
  • Удаление дубликатов файлов с помощью командного файла Windows
  • Могу ли я использовать пакетный файл для удаления пустых столбцов в .csv
  •  rmdir D:\A* /s /q 

    Я получаю сообщение об ошибке, хотя 🙁

    Неверное имя файла, имя каталога или тома.

    Команда del работает с * , но мне также нужно удалить папки.
    Есть ли способ достичь этого с помощью команды rmdir ?

  • Использование VirtualBox для загрузки физического диска / раздела
  • Есть мышь двигаться пропорционально между двумя экранами?
  • Использование mklink / h приводит к тому, что «Доступ запрещен».
  • В чем отличия между файлами .txt Linux и Windows (кодировка Unicode)
  • Как получить параметр в пакетном файле
  • Какую замену проводника Windows я должен использовать?
  • 4 Solutions collect form web for “Использование подстановочных знаков с помощью команды rmdir или rd”

     cd c:\temp for /f %i in ('dir /a:d /s /b A*') do rd /s /q %i 

    Используйте это, чтобы проверить:

     for /f %i in ('dir /a:d /s /b A*') do echo rd /s /q %i 

    Это вытолкнет команды, которые будут запущены в командной строке, и позволит вам увидеть, что происходит.

    Имейте в виду, что это также будет искать подпапки, такие как «C: \ temp \ jjj \ aaa», и удалит папку aaa. Если вы хотите, чтобы он просто смотрел папки верхнего уровня «C: \ temp \ aaa», затем удалите "/s" из этой команды.

    Ключом к этому является A *, где вы должны ввести строку поиска. Это позволит использовать подстановочные знаки, такие как aaa* , aaa* и *aaa* если вы этого хотите.

    Удаление папок с помощью подстановочных знаков

    Команда rmdir / rd сама по себе не поддерживает подстановочные знаки (то есть * и ? ). Вы можете обойти это ограничение, обернув его в цикл for .

    Пример использования

     for /d %G in ("X:\A*") do rd /s /q "%~G" 

    Примечание. При удалении файлов и папок вы можете сначала заменить команду rd echo . Таким образом вы можете гарантировать, что все, что не должно быть удалено, на самом деле было бы.

    Несколько шаблонов

    Чтобы удалить несколько папок, соответствующих различным шаблонам, синтаксис не слишком отличается. Как правильно указал @dbenham, достаточно однострочной команды. Вы также можете указать разные пути:

     for /d %G in ("X:\A*","Y:\Whatever\B*","Z:\C?D") do rd /s /q "%~G" 

    Бонус – проверка наличия папки

    Если вы хотите проверить, существуют ли определенные папки, вы можете использовать следующую команду:

     dir /b /a:d "X:\A*" >nul 2>&1 && echo Folders exist. || echo No folders found. 

    дальнейшее чтение

    • For / d – Переключение по каталогу
    • Условное исполнение
    • Справочник по командной строке

    Как никто еще не рассказывал OP о фазах?

    forfiles /PD:\ /MA* /C "cmd /c if @isdir==TRUE rmdir /s /q @file"

     / M - маска поиска, ища файлы, начинающиеся с A
     / P - это путь - где начинается поиск
     / S - это рекурсивные подпапки (сюда не включалось, потому что op не спрашивал)
     / C - команда для выполнения
    

    Ответ adn31415 правильный, но ломается, если вы помещаете это в пакетный или cmd-скрипт. Я ударил головой в течение нескольких часов, пока не понял, как вы его используете.

    В окне командной строки DOS:

     for /d %G in ("X:\A*") do rd /s /q "%~G" 

    В сценарии Batch или cmd:

     for /d %%G in ("X:\A*") do rd /s /q "%%~G" 

    Если вы хотите поместить его в файл «.bat» или «.cmd», вам нужно удвоить символы «%».

    Давайте будем гением компьютера.