Ist es möglich, eine Liste von Dateien unter Windows an RMDIR weiterzuleiten?

9

Ich schreibe eine Batch-Datei für die Windows-Eingabeaufforderung, um alle Verzeichnisse zu löschen, die einem bestimmten Ausdruck entsprechen.

Ich verwende zuerst DIR, um eine einfache Liste von Verzeichnissen zurückzugeben, die dem Ausdruck entsprechen. Ich möchte jede Ausgabezeile wie folgt in den RMDIR-Befehl leiten:

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

Der obige Befehl scheint jedoch nicht zu funktionieren. Ich verstehe nicht ganz, warum dies nicht funktioniert und wäre jedem dankbar, der eine Erklärung anbieten kann.

user78755
quelle

Antworten:

5

In Ihrer Batch-Datei können Sie Folgendes verwenden:

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

Dies verwendet den FORBefehl, um die Ausgabe eines bestimmten Befehls zu durchlaufen (in diesem Fall dir *.delete /A:D /B /Swird für jedes zurückgegebene Element der mit der DO-Anweisung angegebene Befehl ausgeführt RMDIR /S /Q. Auf das Element wird von der Variablen verwiesen %%a.

Der Grund, warum es nicht funktioniert, die DIRAusgabe einfach weiterzuleiten, RMDIRist, dass Sie die gesamte Ausgabe (mehrere Zeilen) gleichzeitig als einzelnen Parameter an senden RMDIR. Der FORBefehl zerlegt diese Ausgabe, durchläuft jedes Element und sendet es dann einzeln an RMDIR.

Gaff
quelle