Löschen Sie den Inhalt eines Verzeichnisses rekursiv auf Windows
Ich löschen müssen, um den gesamten Inhalt eines Verzeichnisses (verschachtelte Ordner und alle) löschen, ohne das Verzeichnis selbst. Neu das Verzeichnis nach der Tat ist nicht eine option, wie es ist, eingesperrt von den Laufenden Prozess und löschen Sie scheitern würden.
Bisher habe ich die folgenden:
rd /s /q dir1
rd /s /q dir2
rd /s /q dir3
del /q /f *
Funktioniert es, aber das offensichtliche problem ist, dass ich das update dieses Skript jedes mal, wenn das set von first-level-Verzeichnisse ändert.
Unter UNIX würde ich dies Problem lösen, wie dieses:
rm -rf *
Was ist die Windows-Entsprechung?
- Haben Sie nicht versuchen
rd /s /q dir/*
? - Dies scheitert-zumindest auf Windows 2003 Server R2.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Davon aus, dass Sie den Befehl ausführen aus der top-level-Verzeichnis:
Wenn Sie ausgeführt werden diese von einem Skript verwenden, müssen Sie die doppelten Prozentzeichen:
Wenn Sie brauchen, um zu löschen Sie die Dateien im top-level Verzeichnis, fügen Sie diese dem Skript:
for /d /r
) oder löschen (rd
) alle Dateien in das oberste Verzeichnis. (Es ist unklar, ob die OP braucht das schon?)del /q *
an das Skript.Ich weiß, das ist eine alte Frage, alte Antwort, aber ich habe einen einfacheren Weg, dies zu tun und Gedanken zu teilen.
Können Sie Schritt für Schritt in das Ziel-Verzeichnis und verwenden Sie die
rd
Befehl. Da Windows wird Ihnen nicht erlauben, zu löschen Dateien oder Verzeichnisse, die derzeit in Gebrauch sind, und Sie nutzen das Zielverzeichnis durch betreten Sie, Sie werden löschen Sie alle Inhalte mit Ausnahme der Ziel-Verzeichnis selbst.Erhalten Sie eine Meldung, die besagt:
Dies wird auftreten, wenn nach dem löschen alle Inhalte, die
rd
Befehl fehlschlägt, löschen Sie das aktuelle Verzeichnis an, weil Sie stehen. Aber du wirst sehen, dies ist nicht eine tatsächliche Fehler, wenn man das echo der letzten exit-code, die0
.Es ist, was ich verwenden und es funktioniert gut. Ich hoffe, das hilft.