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 aus einem bestimmten Pfad rekursiv löschte.
deltree
existiert nicht mehr, aber del
schien nicht die Fähigkeit zu besitzen, einen Baum zu löschen. del /s
löscht Dateien, aber keine Ordner.
Wie kann man leicht (d. H. Mit einem Befehl) einen Baum aus einer Batchdatei löschen?
Wie bereits erwähnt, hat der Befehl rd
den Schalter /s
, um Unterverzeichnisse rekursiv zu entfernen. Sie können es mit dem Schalter /q
kombinieren, um ein Unterverzeichnis (und dessen Inhalt) ohne entsprechende Aufforderung zu löschen
rd /s /q c:\foobar
Was alle vermissen, ist, dass rd
kein genauer Ersatz für deltree
ist, wie anscheinend ( fast ) jede Seite, die von zurückgegeben wurde Googeln für windows deltree
würde Sie glauben lassen. Der Befehl deltree
funktionierte sowohl für Verzeichnisse als auch für Dateien und machte ihn zu einem einzigen praktischen Allzweck-Löschbefehl. Das heißt, beide der folgenden sind gültig:
deltree /y c:\foobar
deltree /y c:\baz.txt
rd
(nicht überraschend) funktioniert jedoch nur für Verzeichnisse . Daher ist nur der erste dieser Befehle gültig, während der zweite einen Fehler ausgibt und die Datei nicht gelöscht wird:
rd /s /q c:\foobar
rd /s /q c:\baz.txt
Darüber hinaus funktioniert der Befehl del
nur für Dateien und nicht für Verzeichnisse. Daher ist nur der zweite Befehl gültig, während der erste einen Fehler ausgibt:
del /f /q c:\foobar
del /f /q c:\baz.txt
Es gibt keine integrierte Möglichkeit, Dateien und Verzeichnisse zu löschen, wie dies mit deltree
möglich ist. Die individuelle Verwendung von rd
und del
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 Befehl deltree
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
als auch rd
aufruft. etwas wie das:
::deltree.bat
@echo off
rd %* 2> nul
del %* 2> nul
Sie würden es so nennen:
deltree.bat /s /q /f c:\foobar
deltree.bat /s /q /f c:\baz.txt
Dies ruft sowohl rd
als auch del
auf, übergibt die Argumente und leitet die Ausgabe an nul
um, um den Fehler zu vermeiden, den einer von ihnen immer ausgibt.
Möglicherweise möchten Sie das Verhalten anpassen, um Parameter anzupassen oder zu vereinfachen oder um 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 Auffinden eines Tools eine echte Übung beim Erstellen von Suchanfragen ist.
Sie wurde durch die Befehle RMDIR oder RD ersetzt
Löschen Sie alle Unterverzeichnisse mit/S
Verwenden Sie es leise mit dem/Q
Beispiel:
RMDIR /S /Q Folder2Delete
RD /S /Q Folder2Delete
Dokumentation:
Ich fühlte mich nostalgisch und schrieb meine eigene deltree.exe. Es funktioniert mit Verzeichnissen und Dateien und verwendet SHFileOperation () für die Geschwindigkeit.
https://github.com/ai7/toolbox/tree/master/deltree
deltree v1.01 [Mar 27 2015, 16:31:02] (gcc 4.9.1)
Usage: deltree [options] <path> ...
Options:
-y yes, suppresses prompting for confirmation
-s silent, do not display any progress dialog
-n do nothing, simulate the operation
-f force, no prompting/silent (for rm compatibility)
-r ignored (for rm compatibility)
Delete directories and all the subdirectories and files in it.
Es nimmt Platzhalter und Sie können es wie Unix Rm verwenden:
deltree -rf *
rmdir /s /q directory
Heutzutage können Sie Powershell verwenden, um dieselbe Aufgabe auszuführen:
powershell -Command "Remove-Item 'PathToMyDirectory\*' -Recurse -Force"
$ help rd Entfernt (löscht) ein Verzeichnis . RMDIR [/ S] [/ Q] [Laufwerk:] Pfad RD [/ S] [/ Q] [Laufwerk:] Verzeichnis /S Entfernt alle Verzeichnisse und Dateien im angegebenen Verzeichnis zusätzlich zum Verzeichnis selbst. Wird verwendet, um ein Verzeichnis zu entfernen Baum. /Q Stiller Modus. Fragen Sie nicht nach, ob Sie eine Verzeichnisstruktur mit /S.__ entfernen möchten.
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.
Geben Sie dieses "RD /?" in cmd ohne doppelte qoutes erhalten sie genau das, was sie wollen.
Benutze das:
cd (your directory here)
del *.* /f /s /q
ein Verzeichnis und seinen gesamten Inhalt rekursiv löschen
rd /s MY_DOOMED_DIR