Löschen Sie mehrere Verzeichnisse mit einem gemeinsamen Präfix in der Eingabeaufforderung

Löschen Sie mehrere Verzeichnisse mit einem gemeinsamen Präfix in der Eingabeaufforderung

Ich möchte mehrere Unterverzeichnisse desselben Verzeichnisses löschen. Die ersten drei Zeichen im Namen der Verzeichnisse sind "tmp". Das funktioniert nicht:

C:\Documents and Settings\rajesh\Local Settings\Temp> rmdir tmp*

Antwort1

Der rmdirBefehl akzeptiert keine Platzhalter. Sie können eine kleine forSchleife verwenden, um dasselbe Ziel zu erreichen. Dadurch wird der rmdirBefehl mehrmals ausgeführt – einmal für jede Datei/jeden Ordner, der dem angegebenen Muster entspricht:

for /D %f in (tmp*) do rmdir "%f"

  • /SBeachten Sie, dass Sie am Ende hinzufügen müssen, wenn die Ordner nicht leer sind und Sie rekursiv in sie navigieren möchten .
  • Wenn Sie die Bestätigungsprüfung verhindern möchten, fügen Sie diese /Qebenfalls hinzu.
  • Wenn Sie verhindern möchten, dass der Befehl für jede Zeile ausgedruckt wird, fügen Sie @vor dem Befehl Folgendes hinzu.
  • Die Anführungszeichen um %f ermöglichen das Löschen von Ordnern mit Leerzeichen.

Mit allen diesen Optionen hätten Sie beispielsweise:

for /D %f in (tmp*) do @rmdir "%f" /Q /S

Um die vollständige Nutzung anzuzeigen, geben Sie ein rmdir /?.

Antwort2

eine gute, sichere Methode ist, eine Datei mit den Verzeichnissen zu erstellen, die Sie löschen möchten. dir /ad > blah Überprüfen Sie dann, ob die Datei das Gewünschte enthält, und erstellen Sie dann einen for-Befehl, der jede Zeile der Datei wiedergibt. for /f %a in (blah) do @echo %aÄndern Sie ihn dann für die gewünschten Befehle. Diese Zeile setzt beispielsweise rmdir an den Anfang jeder Zeile der Datei for /f %a in (blah) do @echo rmdir %a oder am Ende dieses for-Befehls und fügt /q /s zum bereits vorhandenen rmdir %a hinzu, d. h. verwenden Sie @echo rmdir %a /q /s. Und wenn Sie dann mit den auszuführenden Befehlen zufrieden sind, entfernen Sie den echo-Teil.for /f %a in (blah) do @rmdir %a /q /s

Eine andere Möglichkeit besteht darin, diese Startmethode zu verwenden, um die Datei mit den zu löschenden Unterverzeichnissen aufzulisten. So kann jede Zeile der Datei geändert werden, um den Befehl zum Löschen dieses Unterverzeichnisses zu lesen. Verwenden Sie dann sed auf der Datei, um das Unterverzeichnis x durch rmdir x /q /s zu ersetzen.

Wenn Sie also die Datei mit dem Namen „blah.bah.bah“ haben, sed "s/.*/rmdir \0 \/q\/s/" blah >f type f sehen Sie, dass sie alle Befehle zum Löschen jedes Unterverzeichnisses enthält. Wenn Sie damit zufrieden sind und sie ausführen möchten, können Sie f in f.bat umbenennen und ausführen.

verwandte Informationen