Tags: Datei-Management, Kommandozeile
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.
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).
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.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
Weitere Links
2 Kommentare
$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
}
}
Das Script vom 03.06.2012 hat einfach viel zu viele Rekursionen.
Das hier funktioniert besser... löscht aber bei jedem Durchlauf nur den untersten leeren Ordner. (berücksichtigt also nicht, ob eine komplette Ordnerstruktur nur aus Ordnern besteht und sonst keinerlei Dateien enthält)
whatif bitte selbstständig entfernen:
$items=Get-Childitem -Recurse -Force
foreach($item in $items)
{
if( $item.PSIsContainer){
$subitems = (Get-ChildItem -Force -Path $item.FullName | Measure-Object).Count
if ($subitems -eq 0) {
remove-item $item -whatif
}
}
}