¿Es posible canalizar una lista de archivos a RMDIR en Windows?

9

Estoy escribiendo un archivo por lotes para el símbolo del sistema de Windows para eliminar todos los directorios que coinciden con una cierta expresión.

Primero estoy usando DIRpara devolver una lista simple de directorios que coinciden con la expresión. Me gustaría canalizar cada línea de salida en el comando RMDIR, así:

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

Sin embargo, el comando anterior no parece funcionar. No entiendo completamente por qué esto no funciona y agradecería a cualquiera que pueda ofrecer una explicación.

usuario78755
fuente

Respuestas:

5

Puede usar lo siguiente en su archivo por lotes:

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

Esto usa el FORcomando para recorrer la salida de un comando dado (en este caso dir *.delete /A:D /B /S, y para cada elemento devuelto ejecutará el comando especificado con la instrucción DO RMDIR /S /Q. La variable hace referencia al elemento %%a.

La razón por la que no funciona simplemente canalizando la DIRsalida RMDIRes porque está enviando toda la salida (varias líneas) de una vez como un único parámetro RMDIR. El FORcomando desglosa esta salida, recorre cada elemento y luego lo envía RMDIRuno por uno.

Garfio
fuente