È possibile reindirizzare un elenco di file a RMDIR su Windows?


9

Sto scrivendo un file batch per il prompt dei comandi di Windows per eliminare tutte le directory corrispondenti a una determinata espressione.

Per prima cosa sto usando DIRper restituire un semplice elenco di directory corrispondenti all'espressione. Vorrei collegare ogni riga di output al comando RMDIR, in questo modo:

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

Tuttavia, il comando sopra non sembra funzionare. Non capisco bene perché questo non funziona e sarei grato a chiunque possa offrire una spiegazione.

Risposte:


5

È possibile utilizzare quanto segue nel file batch:

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

Questo utilizza il FORcomando per scorrere l'output di un determinato comando (in questo caso dir *.delete /A:D /B /S, e per ogni elemento restituito eseguirà il comando specificato con l'istruzione DO RMDIR /S /Q. L'elemento viene indicato dalla variabile %%a.

Il motivo per cui non funziona semplicemente eseguendo il piping DIRdell'output RMDIRè perché si sta inviando l'intero output (più righe) contemporaneamente come parametro singolo RMDIR. Il FORcomando interrompe questo output, scorre ogni elemento e quindi lo invia RMDIRuno per uno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.