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


9

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 DIRpara retornar uma lista simples de diretórios correspondentes à expressão. Eu gostaria de canalizar cada linha de saída no comando RMDIR, assim:

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

No entanto, o comando acima parece não funcionar. Não entendo completamente por que isso não funciona e agradeceria a qualquer um que pudesse oferecer uma explicação.

Respostas:


5

You can use the following in your batch file:

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

This uses the FOR command to loop through the output of a given command (in this case dir *.delete /A:D /B /S, and for each item returned it will run the command specified with the DO statement, RMDIR /S /Q. The item is referred to by the variable %%a.

The reason it doesn't work simply piping the DIR output into RMDIR is because you're sending the whole output (multiple lines) all at once as a single parameter to RMDIR. The FOR command breaks down this output, iterates through each item and then sends that to RMDIR one by one.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.