Batch: Dateien/Unterordner/Ordner löschen/leeren

Batch Löschtaktiken

Nur Unterordner eines Zielordners löschen:

for /D %%a in ("zielordner\*.*") do rd /q /s "%%a"

Nur Dateien eines Zielordners löschen, Unterordner (+Inhalt) nicht löschen:

del zielordner\*.* /q

Gesamten Inhalt eines Ordners löschen:
Entweder löscht man den gesamten Ordner und erstellt ihn leer neu:

rd zielordner /s /q && md zielordner

oder man leer den Inhalt ohne den Ordner selbst anzufassen:

del zielordner /s /f /q
for /D %%a in ("zielordner\*.*") do rd /q /s "%%a"
Auch interessant:  AD GPO: Erweiterte Filterung mit WMI

4 Kommentare

  1. Die Befehlsfolge:
    del zielordner /s /f /q
    for /D %%a in („zielordner\*.*“) do rd /q /s „%%a“
    löscht nicht alle Ordner/Unterorder, wenn ich vorher in einem der Unterordner z.B. per Explorer etwa angesehen, bzw. bearbeitet habe.
    Dann muss ich den Befehl mehrfach aufrufen, damit auch wirklich alles gelöscht wird.
    Wie kann man dies mit nur einem Befehl bewerkstelligen?

    1. Hallo KVISRef,
      das ist soweit korrekt: Wenn ein Prozess/Handler einen Ordner oder eine Datei belegt, kann diese(r) womöglich nicht gelöscht werden. Das kommt aber auf den zugreifenden Prozess zu, manche sind da weniger restriktiv. Beispielsweise löscht der erste Befehl del auch Dateien, die vom legacy Editor Notepad gerade geöffnet sind. Dagegen werden aber tatsächlich Ordner von der for ... rd Befehlskombi nicht gelöscht, wenn diese im Explorer geöffnet sind.
      Wie kann man das lösen? Man kann die Prozesse/Handler killen, die gerade blockieren, aber dazu müsste man diese kennen. Wenn es nur um im Explorer noch geöffnete Verzeichnisse geht, könnte man vorher die explorer.exe via taskkill beenden, dann die Befehle durchlaufen lassen und explorer.exe wieder starten.
      Damit werden aber keine anderen Dateiexplorer oder Programme beendet, die eventuell auch blockieren. In komplexeren Situationen, wenn die Lösung wirklich sichergestellt werden muss, würde ich auf Tools wie Unlocker, WhoLockMe oder LockHunter schauen, in der Hoffnung, dass eins davon per Kommandozeile bedient werden kann. Dann in Batch beim Löschen auf Fehler wie „Der Prozess kann nicht auf die Datei zugreifen“ achten, die Problemordner dann an das Tool übergeben, dort am besten direkt unlocken lassen und erneut löschen. Wenn es nicht unbedingt Batch sein muss, empfiehlt sich hier vermutlich auch Powershell, das könnte einfacher und kürzer werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.