Leere Verzeichnisse löschen

Um leere Verzeichnisse aufzuspüren und zu löschen, kann man sich eine Eigenart des »RD«-Kommandos1) (Remove Directory) zu Nutze machen, welches ohne Angabe weiterer Parameter nur leere Verzeichnisse löscht. In einer »FOR-Schleife«2) kann man nun den »DIR«-Befehl3) mit einigen Argumenten (/AD) anweisen nur Verzeichnisse zu suchen und die Ausgabe in eine Variable schreiben lassen. Damit Verzeichnisse, welche zB nur ein leeres Verzeichnis enthalten ebenfalls gelöscht werden, kehrt man die Ausgabe mit den »SORT«-Befehl4) um, andernfalls würde das Verzeichnis, welches ursprünglich das leere Verzeichnis beinhaltet hat, stehen bleiben.

Eine Batch Datei könnte nun zB wie folgt aussehen:

rmemptydir.bat

@echo off
set gotodir="%TEMP%"  
FOR /F "tokens=* delims=" %%i in ('dir /AD /B /S %gotodir% ^| sort /R' ) do (  
  RD "%%i" 2>nul && echo DELETE %%i  
) 

In dieser FOR-Schleife wird der DIR-Befehl angewiesen, im Verzeichnis %TEMP% nur alle Verzeichnisse (/AD) und Unterverzeichnisse (/S) zu suchen, die Ausgabe im einfachen Format (/B → nur den Namen, keine Größe, keine Zusammenfassung etc) an den SORT-Befehl weiterzuleiten, welcher die Ausgabe einfach nur umkehrt (/R) und jedes gefundene Element in die Variable »%i« zu schreiben. Das zweite %-Zeichen bei der Variablendeklaration ist in Batch-Dateien notwendig und das ^-Zeichen vor der Pipe »|« ist in der FOR-Schleife notwendig, damit dieses Zeichen vor der Interpretation geschützt (maskiert) wird. Jedes Element (in der Variable %i) wird nun durch die DO-Anweisung an den RD-Befehl weitergeleitet, welcher versucht die Verzeichnisse zu löschen aber jeder Löschversuch eines nicht leeren Verzeichnis scheitert und erzeugt einen Fehler, welcher aber in der Ausgabe unterdrückt (2>nul) wird. Des Weiteren wird jedes gelöschte Verzeichnis in der Standardausgabe angezeigt (echo DELETE %i)

Note: Beachten Sie aber dabei, dass auch ggf Verzeichnisse gelöscht werden, welche das System angelegt hat und derzeit noch leer sind, je nachdem wo Sie mit der Suche nach leeren Verzeichnissen anfangen und welche Rechte der User hat, unter welchem das Kommando ausgeführt wird. IdR werden solche Verzeichnisse zwar wieder angelegt, wenn sie gebraucht werden aber eine Garantie dafür gibt es nicht.

Verwandte Artikel:
-> (Batch) TEMP-Verzeichnisse beim Shutdown/Logoff löschen


pronto 2011/02/13 16:04

win/rm_empty_dirs.txt (12041 views) · Zuletzt geändert: 2011/03/31 16:53 (Externe Bearbeitung)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0