Leere Verzeichnisse und Dateien löschen

    Angesichts der Speicherkapazität moderner Datenträger stellen leere Dateien und Ordner kein Platzproblem mehr dar. Allerdings kann man den Wunsch verspüren, die ohnehin unübersichtliche Verzeichnisstruktur zu lichten, indem man Bereiche ohne Inhalt entfernt. Die kostenlosen Tools Remove Empty Directories und DelEmpty erledigen diese Aufgabe.

    Wenn man mit dieser Anforderung konfrontiert wird, könnte man spontan glauben, dass sich leere Dateien und Verzeichnisse auch mit den Mitteln der Kommandozeile bzw. von Batch-Dateien löschen lassen müssten. Bei genauerer Betrachtung stellt sich aber heraus, dass weder der del-Befehl eine entsprechende Option bietet noch eine einfache Möglichkeit besteht, sich derartige Dateien oder Verzeichnisse überhaupt auflisten lassen.

    Remove Empty Directories für die GUI

    Das kostenlose Remove Empty Directories (RED) ist ein Tool für die grafische Oberfläche, das anhand einiger konfigurierbarer Einstellungen den Verzeichnisbaum ausgehend von einem beliebigen Ordner durchsucht und die Löschkandidaten gut sichtbar markiert. Wenn ein Verzeichnis nur leere Dateien enthält, dann kann es abhängig von den gewählten Optionen ebenfalls abgeräumt werden. Das Scan-Ergebnis zeigt eine solche Konstellation explizit an.

    Remove Empty Directories hebt allen leeren Verzeichnis farblich hervor, bevor es sie im nächsten Durchgang löschen würde.

    Zu den nützlichsten Funktionen der Software gehört, dass man als Löschmethode das Verschieben in den Papierkorb wählen kann, so dass sich irrtümlich entfernte Objekte wiederherstellen lassen. Diese Gefahr ist real, wenn man gleich einen ganzen Datenträger aufräumen möchte. So macht das Programm nicht vor dem Windows-Verzeichnis halt, auch wenn man die Option skip System directories aktiviert hat.

    Ausnahmen für Programmverzeichnisse definieren

    Daher sollte man die Möglichkeit nutzen, die Ordner für das Betriebssystem und für die Programme in die Liste der Ausnahmen einzutragen. Leere Verzeichnisse, die für Sprachdateien angelegt wurden oder solche, die Programme eventuell als Arbeitsverzeichnisse benötigen, sollte man nämlich besser in Ruhe lassen. Beim Eintrag der Programmverzeichnisse bei den Ausnahmen sind die englischen Namen zu verwenden und nicht Bezeichnungen der deutschen Links, also Program Files und Program Files (x86).

    Das Programm lässt sich über mehrere Optionen steuern, die helfen können, unerwünschte Löschungen zu vermeiden.

    Problemkandidaten sind auch das Default- und das öffentliche Profil, weil dort die verschiedenen Standardverzeichnisse wie Eigene Dokumente oder Desktop leer sind und dem Tool zum Opfer fallen würden. Aus diesem Grund ist bei der Konfiguration des Tools auch darauf Rücksicht zu nehmen. Wegen der Komplikationen, die beim Löschen von leeren Dateien und Verzeichnissen entstehen können, eignet sich Remove Empty Directories vor allem für Datenverzeichnisse, beispielsweise auf File-Servern.

    DelEmpty besser für leere Dateien geeignet

    Beim Löschen leerer Dateien gelten einige Einschränkungen. So können sie nur zusammen mit leeren Verzeichnissen entfernt werden. Wenn ein Ordner also auch nicht-leere Dateien enthält, dann kann es darin enthaltene leere Dateien nicht eliminieren. Die einzige Ausnahme sind Verzeichnisse, in denen nicht-leere Dateien abgelegt sind, diese aber über eine eigene Liste als temporäre Daten gekennzeichnet sind und diese ebenfalls entfernt werden.

    Wer es vor allem auf leere Dateien abgesehen hat, findet in dem Kommandozeilen-Tool DelEmpty eine gründliche Lösung. Auch für dieses Tool gelten die gleichen Vorbehalte hinsichtlich unerwünschter Löschungen, wobei es im Gegensatz zu RED die Dateien nicht in den Papierkorb verschiebt, sondern gleich löscht, so dass man versehentlich entfernte Dateien nur mit Hilfe eines undelete-Programms wiederherstellen könnte. Aber immerhin besitzt DelEmpty einen Simulationsmodus, der zeigt, was im Ernstfall passiert.

    1 Kommentar

    Bild von PowerShellRules
    PowerShellRules sagt:
    3. Juni 2012 - 13:35

    $items = Get-ChildItem -Recurse
    foreach($item in $items)
    {
    if( $item.PSIsContainer )
    {
    $subitems = Get-ChildItem -Recurse -Path $item.FullName
    if($subitems -eq $null)
    {
    "Remove item: " + $item.FullName
    Remove-Item $item.FullName
    }
    $subitems = $null
    }
    }