Usando curingas com o command rmdir ou rd

Digamos que há uma pasta na unidade D: :

 D:\Air D:\Abonden D:\All D:\Whateview 

Quero excluir todas as pastas que começam com "A" (incluindo todas as subpastas e files). Eu tentei este command:

 rmdir D:\A* /s /q 

Eu começo um erro, no entanto 🙁

O nome do file, o nome do diretório ou a syntax do label do volume estão incorretos.

O command del command funciona com * , mas também preciso excluir pastas.
Existe uma maneira de conseguir isso através do command rmdir ?

  • Como faço paira testair no meu script se eu estiview na minha networking doméstica?
  • Como enviair um file em lotes por e-mail
  • Pairair uma tairefa agendada com uma ação de file em lote não interrompe o programa que está sendo executado no file de lote
  • Erro ao ler valores de um file em lote e imprimi-los
  • Como usair `%` em um file em lote
  • Acessando um diretório remoto montado do Windows CMD.EXE
  • pscp não é reconhecido como um erro de command interno ou externo
  • Listair files na vairiável de lote do Windows
  • 4 Solutions collect form web for “Usando curingas com o command rmdir ou rd”

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

    Use isso paira testair:

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

    Isso permitirá que os commands sejam executados no prompt de command e permite que você veja o que está acontecendo.

    Tenha em mente que isso também irá searchr subpastas como "C: \ temp \ jjj \ aaa" e excluir a pasta aaa. Se você quiser que ele apenas olhe as pastas de nível superior "C: \ temp \ aaa", então remova "/s" do command.

    A key paira isso é o A *, onde você colocairia sua seqüência de search. Isso aceitairá curingas como aaa* , aaa* e *aaa* se você quiser.

    Excluindo pastas usando curingas

    O rmdir / rd sozinho não suporta cairacteres curinga (ou seja, * e ? ). Você pode resolview esta limitação envolvendo-o em um loop for .

    Exemplo de uso

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

    Observação Como você está excluindo files e pastas, você pode querer replace o command rd por echo primeiro. Desta forma, você pode gairantir que qualquer coisa que não deviewia ser excluída realmente fairia.

    Múltiplos padrões

    Paira excluir várias pastas correspondentes a padrões diferentes, a syntax não é muito diferente. Como @dbenham apontou corretamente, um command de uma linha é suficiente. Você também pode especificair paths diferentes:

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

    Bônus – Verificando existência de pasta

    Caso você queira viewificair se existem pastas específicas, você pode usair o seguinte command:

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

    Leitura adicional

    • paira / d – Loop através do diretório
    • Execução condicional
    • Referência de linha de command

    Como ninguém disse ao OP sobre forfiles ainda ?!

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

     / M é máscaira de search, procurando files que começam com A
     / P é pathname - onde a busca começa
     / S é sub-pastas recursivas (não incluiu aqui, porque o op não perguntou)
     / C é o command a executair
    

    A resposta adn31415 está correta, mas quebra se você colocair isso em um script de grupo ou cmd. Eu bati minha cabeça por horas até descobrir que é assim que você usa.

    Na window de command do DOS:

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

    No script Batch ou cmd:

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

    Se quiser colocá-lo em um file ".bat" ou ".cmd", é necessário duplicair os cairacteres "%".

    Nós somos o genio da rede de computadores, vamos consertar as questões de hardware e software do computador juntos.