É possível enviar uma lista de arquivos para o RMDIR no Windows?

8

Estou escrevendo um arquivo em lotes para o prompt de comando do Windows para excluir todos os diretórios correspondentes a uma determinada expressão.

Estou usando pela primeira vez DIR para retornar uma lista simples de diretórios correspondentes à expressão. Eu gostaria de canalizar cada linha de saída para o comando RMDIR, assim:

DIR *.delete /A:D /B /S | RMDIR /S /Q

No entanto, o comando acima parece não funcionar. Eu não entendo completamente porque isso não funciona e ficaria grato a qualquer um que possa oferecer uma explicação.

    
por user78755 28.04.2011 / 11:52

1 resposta

5

Você pode usar o seguinte no seu arquivo de lote:

FOR /f "tokens=*" %%a in ('dir *.delete /A:D /B /S') DO RMDIR /S /Q %%a

Isso usa o comando FOR para percorrer a saída de um determinado comando (nesse caso, dir *.delete /A:D /B /S e, para cada item retornado, ele executará o comando especificado com a instrução DO, RMDIR /S /Q . O item é referido pela variável %%a .

O motivo pelo qual não funciona simplesmente canalizar a saída DIR para RMDIR é porque você está enviando toda a saída (várias linhas) de uma só vez como um único parâmetro para RMDIR . O comando FOR decompõe essa saída, percorre cada item e envia isso para RMDIR , um por um.

    
por 28.04.2011 / 12:04