In früheren Versionen von MS-DOS - ich möchte Version 7 sagen, aber ich könnte mich irren - gab es einen deltree
Befehl, der alle Unterverzeichnisse und Dateien rekursiv aus einem bestimmten Pfad löschte.
deltree
existiert nicht mehr, del
schien aber nicht die Fähigkeit zu erben, einen Baum zu löschen. del /s
löscht Dateien, aber keine Ordner.
Wie können Sie einfach (dh mit einem Befehl) einen Baum aus einer Batchdatei löschen?
windows
batch-file
cmd
dos
David Koelle
quelle
quelle
Antworten:
Wie bereits erwähnt, verfügt der
rd
Befehl über den/s
Schalter zum rekursiven Entfernen von Unterverzeichnissen. Sie können es mit dem/q
Schalter kombinieren , um ein Unterverzeichnis (und seinen Inhalt) ohne Aufforderung zwangsweise zu löschenWas jeder fehlt , ist , dass
rd
ist nicht ein exakter Ersatz fürdeltree
so scheinbar ( fast ) jede Seite von googeln zurück fürwindows deltree
Sie würde glauben lassen . Derdeltree
Befehl funktionierte sowohl für Verzeichnisse als auch für Dateien und war somit ein einziger praktischer Allzweck-Löschbefehl. Das heißt, beide der folgenden sind gültig:Funktioniert jedoch
rd
(nicht überraschend) nur für Verzeichnisse . Als solches ist nur der erste dieser Befehle gültig, während der zweite Fehler gibt und die Datei nicht gelöscht lässt:Außerdem
del
funktioniert der Befehl nur für Dateien, nicht für Verzeichnisse. Daher ist nur der zweite Befehl gültig, während der erste einen Fehler ausgibt:Es gibt keine integrierte Möglichkeit, Dateien und Verzeichnisse zu löschen, wie dies möglich wäre
deltree
. Die Verwendung vonrd
unddel
individuell ist bestenfalls unpraktisch, da unterschieden werden muss, ob ein Dateisystemobjekt (Datei- / Ordnername) eine Datei oder ein Verzeichnis ist, was nicht immer möglich oder praktisch ist.Sie können den
deltree
Befehl von einem früheren Betriebssystem kopieren , er funktioniert jedoch nur unter 32-Bit-Versionen von Windows, da es sich um einen 16-Bit-DOS-Befehl handelt (auch unter Windows 9x).Eine andere Möglichkeit besteht darin, eine Batch-Datei zu erstellen, die sowohl
del
und aufruftrd
. etwas wie das:Sie würden es so nennen:
Dies ruft beide auf
rd
unddel
übergibt die Argumente und leitet die Ausgabe umnul
, um den Fehler zu vermeiden, den einer von ihnen ausnahmslos ausgibt.Möglicherweise möchten Sie das Verhalten anpassen, um Parameter anzupassen oder zu vereinfachen oder Fehlermeldungen zuzulassen. Trotzdem ist es nicht ideal und kein direkter Ersatz für
deltree
.Eine Alternative besteht darin, ein Tool eines Drittanbieters zu erwerben, obwohl das Finden eines Tools eine echte Übung beim Erstellen von Suchanfragen ist.
quelle
rd /s foobar.txt
:, werden Sie aufgefordert, wenn Sie sicher sind, und wenn Sie Ja sagen (oder den/q
Schalter verwenden), wird der FehlerThe directory name is invalid.
RMDIR /S
ist also tatsächlich falsch, Dateien und Ordner auf einmal zu löschen.rd /s
nur für das Verzeichnis, nicht für die darin enthaltenen Dateien . Um die darin enthaltenen Dateien zu löschen, müssen Sie sierd
im Verzeichnis selbst verwenden. Sie können beispielsweise nicht sagenrd c:\target\foobar.txt
, dass Sie verwenden müssenrd /s c:\target
, aber Sie möchten möglicherweise nicht das Verzeichnis selbst löschen, sondern nur dessen Inhalt.deltree
könnte das tun, kann aberrd /s
nicht,rd /s
löscht auch das Verzeichnis selbst.RMDIR /S
- nichtrd /s
. Aber auchrd
wenn das Verzeichnis nicht mehr vorhanden ist, wie werden die Dateien nicht entfernt? Selbst wenn dies nicht der Fall wäre, sind die Dateien effektiv verwaist und sollten vom System als Müll gesammelt werden. Und selbst wenn dies nicht geschehen ist, ist dies sicherlich der Fall, wenn Sie das Verzeichnis neu erstellen. Sie erhalten auf magische Weise keine Liste Ihrer Dateien erneut. Zeiger werden im Wesentlichen entfernt. Wollen Sie damit sagen, dass Sie diesen Speicherplatz einfach nie zurückbekommen, weil Sie diese Dateien bei Verwendung nie wieder löschen könnenrd /s
? Ich bin mir nicht sicher, ob ich das glauben würde - das wäre ein schrecklicher Fehler. Punkt ist, Dateien & Verzeichnis zu löschen.cd Documents
,rd /s test
, Ihr Verzeichnis und die Textdatei werden gelöscht.rmdir /s test
funktioniert auch. Du versuchst NIE zu benutzenrd /s C:\Users\me\Documents\test\test.txt
- das wäre absolut dumm. Sie KÖNNEN und SOLLTEN den Befehl für das Verzeichnis verwenden, nur nicht für den Dateinamen. Durch Entfernen des Verzeichnisses können Sie jedoch die Dateien entfernen.Es wurde durch die Befehle RMDIR oder RD ersetzt
Löschen Sie alle Unterverzeichnisse mit / S.
Verwenden Sie es leise mit dem / Q.
Beispiel:
Dokumentation:
quelle
Ich fühlte mich nostalgisch und schrieb meine eigene deltree.exe. Es funktioniert sowohl mit Verzeichnissen als auch mit Dateien und verwendet SHFileOperation () für die Geschwindigkeit.
https://github.com/ai7/toolbox/tree/master/deltree
Es braucht Platzhalter und Sie können es wie Unix rm verwenden:
quelle
quelle
Heutzutage können Sie Powershell verwenden, um dieselbe Aufgabe zu erledigen:
quelle
quelle
Tatsächlich führen RMDIR- und RD-Befehle in modernen Windows-Betriebssystemen die Befehle RD und Deltree von Win 98 in einem einzigen Befehl zusammen. Es ist ein interner Befehl, weshalb Sie keine RD.exe und RMDIR.exe finden.
Durch Eingabe dieses "RD /?" In cmd ohne doppelte Qoutes erhalten Sie genau das, was Sie wollen.
quelle
um ein Verzeichnis und seinen gesamten Inhalt rekursiv zu löschen
quelle
Benutze das:
quelle
Löschen Sie alle Dateien und Unterverzeichnisse
quelle