Kann eine Liste von Dateien unter Windows an RMDIR übergeben werden?

9712
user78755

Ich schreibe eine Batchdatei 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 mit dem Ausdruck übereinstimmen. Ich möchte jede Zeile der Ausgabe in den RMDIR-Befehl wie folgt weiterleiten:

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

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

8

1 Antwort auf die Frage

5
3498DB

Sie können Folgendes in Ihrer Batchdatei verwenden:

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

Mit diesem FORBefehl wird die Ausgabe eines bestimmten Befehls durchlaufen (in diesem Fall dir *.delete /A:D /B /Swird für jeden zurückgegebenen Artikel 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, ist die DIRAusgabe einfach RMDIRdarin, weil Sie die gesamte Ausgabe (mehrere Zeilen) gleichzeitig als einen einzigen Parameter an senden RMDIR. Der FORBefehl unterbricht diese Ausgabe, durchläuft jedes Element und sendet diese dann einzeln an RMDIR.

Das hat perfekt funktioniert. Vielen Dank user78755 vor 13 Jahren 0