
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 rmdir
Befehl akzeptiert keine Platzhalter. Sie können eine kleine for
Schleife verwenden, um dasselbe Ziel zu erreichen. Dadurch wird der rmdir
Befehl mehrmals ausgeführt – einmal für jede Datei/jeden Ordner, der dem angegebenen Muster entspricht:
for /D %f in (tmp*) do rmdir "%f"
/S
Beachten 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
/Q
ebenfalls 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.