Digamos que haja alguma pasta na D:
unidade:
D:\Air
D:\Abonden
D:\All
D:\Whatever
Desejo excluir todas as pastas começando com "A" (incluindo todas as subpastas e arquivos). Eu tentei este comando:
rmdir D:\A* /s /q
No entanto, recebo um erro :(
O nome do arquivo, nome do diretório ou sintaxe do rótulo do volume está incorreto.
O del
comando funciona com *
, mas eu preciso excluir as pastas também.
Existe uma maneira de conseguir isso através do rmdir
comando?
windows
command-line
batch
serdar
fonte
fonte
Respostas:
Use isso para testar:
Isso direcionará os comandos a serem executados no prompt de comando e permitirá que você veja o que está acontecendo.
Lembre-se de que isso também pesquisará subpastas como "C: \ temp \ jjj \ aaa" e excluirá a pasta aaa. Se você quiser apenas olhar para as pastas de nível superior "C: \ temp \ aaa", remova
"/s"
o comando.A chave para isso é o A *, onde você colocaria sua string de pesquisa. Isso aceitará curingas como
aaa*
,aaa*
e*aaa*
se você desejar.fonte
for /f %%i in ('dir /a:d /s /b A*') do rd /s /q %%i
Excluindo pastas usando curingas
A
rmdir
/rd
comando por si só não suporta caracteres curinga (isto é,*
e?
). Você pode solucionar essa limitação envolvendo-a em umfor
loop.Exemplo de uso
Nota Ao excluir arquivos e pastas, convém substituir o
rd
comandoecho
primeiro. Dessa forma, você pode garantir que qualquer coisa que não deva ser excluída realmente o faria.Padrões múltiplos
Para excluir várias pastas que correspondem a diferentes padrões, a sintaxe não é muito diferente. Como o @dbenham apontou corretamente, um comando de uma linha é suficiente. Você também pode especificar caminhos diferentes:
Bônus - Verificando a existência da pasta
Caso deseje verificar se existem pastas específicas, você pode usar o seguinte comando:
Leitura adicional
fonte
FOR /D
e simplesFOR /D /R
. Basta usarin( "A*" "B*" "C?D" )
./R
opção porque a subpasta que corresponde à máscara pode estar sob um pai que não.Como ninguém falou ao OP sobre forfiles ainda ?!
forfiles /P D:\ /M A* /C "cmd /c if @isdir==TRUE rmdir /s /q @file"
fonte
for /d
como na and31415, é mais limpa e mais eficiente.A resposta adn31415 está correta, mas é interrompida se você colocar isso em um script de lote ou cmd. Eu bati minha cabeça por horas até descobrir que é assim que você a usa.
Na janela de comando do DOS:
No script em lote ou cmd:
Se você quiser colocá-lo em um arquivo ".bat" ou ".cmd", precisará dobrar os caracteres "%".
fonte