So entfernen Sie leere Ordner automatisch in Windows

Im Laufe der Zeit können Hunderte von leeren Ordnern und Junk-Dateien Ihre Festplatte belegen. Während die Junk-Dateien Speicherplatz belegen und mithilfe der Einstellungen für Datenträgerbereinigung oder Speicher bereinigt werden können, bleiben die leeren Verzeichnisse erhalten.

Die leeren Ordner belegen keinen Speicherplatz. Um Ihre Daten jedoch besser zu organisieren, sollten Sie sie gelegentlich bereinigen.

In diesem Artikel werden verschiedene Methoden zum Suchen und Entfernen leerer Ordner auf Ihrem Computer beschrieben.

Wie finde und entferne ich leere Ordner in Windows?

Ein leerer Ordner oder ein leeres Verzeichnis enthält keine Datei oder kein Unterverzeichnis. Leere Ordner belegen keinen Speicherplatz, aber zu viele davon können störend sein. Verwenden Sie eine der folgenden Methoden, um sie zu finden und zu entfernen.

Wichtig: Es wird normalerweise nicht empfohlen, ein automatisiertes Tool oder eine Batchdatei zum rekursiven Löschen leerer Ordner auf dem gesamten Systemlaufwerk auszuführen. Dies liegt daran, dass einige Programme möglicherweise nicht funktionieren und einen bizarren Fehler auslösen, wenn ein wesentlicher Ordner fehlt. Wie immer gilt die Standardwarnung. Stellen Sie sicher, dass Sie geeignete Sicherungen vorzugsweise auf einem externen Laufwerk haben, bevor Sie mit dem Dateisystem oder der Windows-Registrierung arbeiten.

VERBINDUNG: Suchen und löschen Sie 0-Byte-Dateien rekursiv in einem Ordner in Windows

Beginnen wir mit einem übersichtlichen GUI-Tool, gefolgt von nativen Befehlszeilen- und Skriptmethoden.

1. Entfernen Sie leere Ordner mit dem Dienstprogramm „Leere Dateien und Ordner suchen“

Leere Dateien suchen-n-Ordner ist ein hervorragendes Tool, mit dem Sie leere Dateien (0 Byte) und leere Ordner rekursiv unter einem Ordnerbaum suchen und löschen können.

Laden Sie Find Ashptes Files-n-Folders (600 KB Installationsprogramm) von Ashisoft.com herunter.

Wählen Sie den Ordner aus und klicken Sie auf Jetzt scannen.

Das Tool listet leere Dateien und Ordner in separaten Registerkarten auf.

Klicken Sie auf Alle Ordner markieren und dann auf Ordner löschen .

Um die 0-Byte-Dateien in der ausgewählten Ordnerstruktur zu löschen, klicken Sie auf die Registerkarte Leere Dateien .

Ashisoft.com hat andere großartige Tools, die Sie ausprobieren können!


2. Entfernen Sie leere Ordner mit den Befehlen „for“ und „rd“

Mit den internen Befehlen der Eingabeaufforderung for und rd die Liste der Ordner auflisten und die leeren löschen.

  1. Halten Sie die Umschalttaste gedrückt, klicken Sie mit der rechten Maustaste auf einen Ordner und klicken Sie hier auf Befehlsfenster öffnen. Dadurch wird die Eingabeaufforderung am aktuellen Ordner geöffnet, die auch in der Konsole überprüft werden kann. Hinweis: Sie müssen sicherstellen, dass Sie den folgenden Befehl über den genauen Pfad des übergeordneten Ordners ausführen, in dem Sie leere Unterordner suchen und entfernen müssen.
  2. Wenn Sie sich in der Eingabeaufforderung im gewünschten Verzeichnis befinden, führen Sie die folgende Befehlszeile aus:
     für / f "delims ="% i in ('dir / s / b / ad ^ | sort / r') mache rd "% i" 2> NUL 

    $config[ads_text6] not found

    Dadurch werden alle leeren Verzeichnisse in Unterverzeichnissen aus dem Basisordnerpfad gelöscht, einschließlich verschachtelter leerer Ordner.

Die obige Befehlszeile wurde freundlicherweise von Raymond Chen von Microsoft über seinen Blog The Old New Thing zur Verfügung gestellt. In diesem Beitrag wurde die Befehlszeile von Raymond geringfügig geändert, sodass auch Ordnernamen mit Leerzeichen gelöscht werden.

Wie funktioniert der Befehl?

Der obige Befehl listet alle Unterverzeichnisse (rekursiv) im aktuellen Basispfad auf und sortiert die Liste ( sort /r ) in umgekehrter Reihenfolge. Die Sortierung in umgekehrter Reihenfolge soll sicherstellen, dass die Aufzählung von unten nach oben erfolgt. Dies ist wichtig für das Löschen leerer Verzeichnisse, da Sie die Unterverzeichnisse entfernen müssen, bevor Sie das übergeordnete Verzeichnis entfernen.

Anschließend wird versucht, die Liste der Verzeichnisse (in umgekehrter Sortierreihenfolge) mit dem Befehl RD zu entfernen. Wenn ein Verzeichnis nicht leer ist, fährt es mit dem nächsten Verzeichnis fort und so weiter. Der Befehl 2>NUL stellt sicher, dass der Ausgabetext "Verzeichnis nicht leer" unterdrückt wird.

Der einzige Nachteil der obigen Methode ist, dass es nicht hilfreich ist, wenn Sie einfach leere Ordner suchen möchten, ohne sie zu löschen. Wenn Sie die Liste der leeren Ordner suchen möchten, verwenden Sie die Befehlszeile im folgenden Absatz oder folgen Sie einer anderen in diesem Artikel beschriebenen Methode.

Leere Ordner suchen, aber nicht löschen

Verwenden Sie diese Befehlszeilensyntax, um nur die leeren Ordner zu finden, ohne sie zu löschen:

 für / r "D: \ uploads \ 2019" / d% F in (.) do @dir / b "% F" | findstr "^"> nul || Echo% ~ fF 

Es zeigt Ihnen die Ausgabe mit der Liste der leeren Verzeichnisse.

Angenommen, Sie haben leere verschachtelte Ordner wie folgt:

 C: \ 1 └───2 └───3 └───4 

Wenn Sie den obigen Befehl ausführen, wird nur der am tiefsten leere Ordner aufgelistet → 4 . Technisch gesehen ist dies korrekt, da ein Ordner nicht als leer betrachtet werden kann, wenn ein Unterordner oder eine Datei darin vorhanden ist.


3. Suchen und entfernen Sie leere Ordner mit dem Befehl Robocopy

Robocopy ist ein leistungsstarkes integriertes Dateikopierwerkzeug mit vielen erweiterten Funktionen. Wir haben Robocopy im Artikel Vergleichen des Inhalts von zwei Ordnern in Windows behandelt.

Angenommen, Sie haben einen Ordner mit dem Namen cars der mehrere Unterordner enthält, von denen einige leer sind. Wir werden die leeren mit Robocopy löschen.

Der Trick dabei ist, den Befehl Robocopy move zu verwenden und genau den gleichen Ordnerpfad sowohl für die Quelle als auch für das Ziel zu übergeben.

  1. Öffnen Sie ein Eingabeaufforderungsfenster
  2. Geben Sie den folgenden Befehl ein und drücken Sie die EINGABETASTE:
     Robokopie "d: \ Autotarife \ Autos" "d: \ Autotarife \ Autos" / S / move 

    Das Wichtigste dabei ist, dass der Quell- und der Zielpfad (absichtlich) identisch sind. Der Parameter /S weist Robocopy an, leere Ordner nicht in den Zielpfad zu verschieben. Da wir die gleichen Pfade für Quelle und Ziel erwähnt haben, löscht Robocopy die leeren Ordner einfach, da der Schalter /S .

Die leeren Ordner im ausgewählten Pfad werden jetzt gelöscht.

Möchten Sie leere Ordner finden, aber nicht löschen?

Sie können das Befehlszeilenargument /L (nur Liste) mit Robocopy verwenden, damit nur ein Trockenlauf ausgeführt wird, anstatt den eigentlichen Kopier- / Verschiebevorgang auszuführen.

$config[ads_text6] not found

/L :: Nur Liste - Kopieren, zeitstempeln oder löschen Sie keine Dateien.

/MOVE :: MOVE-Dateien UND Verzeichnisse (nach dem Kopieren aus der Quelle löschen).

/S :: copy Unterverzeichnisse, aber keine leeren.

Sie können die Anzahl der Dateien in einer Spalte sehen und den Ordnerpfad hören. Die Nullen bedeuten, dass diese Ordner keine Dateien haben.

Lassen Sie uns diesen Befehl auf eine echte Probe stellen!

Mein %APPDATA% -Ordner ist voll mit leeren Ordnern, die von veralteten Programmen hinzugefügt wurden.

Vor der Bereinigung hatte der Ordner Appdata \ Roaming 681 Ordner, wie in den Ordnereigenschaften angezeigt .

Ich habe die Eingabeaufforderung geöffnet und den folgenden Befehl ausgeführt:

 Robokopie "% appdata%" "% appdata%" / S / MOVE 

Hinweis: Die Umgebungsvariable% appdata% wird in den Ordner C:\Users\{username}\AppData\Roaming . Sie können den vollständigen Ordnerpfad oder die entsprechende Umgebungsvariable mit Robocopy verwenden. Beides ist in Ordnung.

Es wurden 94 leere Ordner in meinem %APPDATA% -Ordner und in meinen Unterordnern erfolgreich entfernt.

Anmerkung des Herausgebers: In der Befehlszeilenausgabe unterhalb des Statistikabschnitts wurde der folgende Fehler angezeigt:

“ERROR 32 (0x00000020) Löschen des Quellverzeichnisses C: \ Users \ ramesh \ AppData \ Roaming \

Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird. “

Da wir Robocopy angewiesen haben, das Verzeichnis% APPDATA% zu verschieben ( /MOVE ), hat das Tool versucht, den Ordner "source" zu bereinigen, nachdem er an das Ziel "verschoben" wurde. Dies war nicht möglich, da% APPDATA% ein spezieller Ordner ist. Der Fehler tritt nicht auf, wenn ein Verzeichnispfad verwendet wird, der kein spezieller Ordner ist. Da alles gut lief, habe ich den (trivialen) Fehler einfach ignoriert.


4. Suchen und entfernen Sie leere Ordner mit PowerShell

Die folgende PowerShell-Befehlszeile löscht leere Ordner, die sich unter dem angegebenen Basisordner befinden, rekursiv.

  1. Starten Sie PowerShell und geben Sie den folgenden Befehl ein:
     (gci "Ordnerpfad" -r |? {$ _. PSIsContainer -eq $ True}) | ? {$ _. GetFileSystemInfos (). Count -eq 0} | Gegenstand entfernen 

    Ersetzen Sie "Ordnerpfad" durch den Speicherort des Basisordners. Zum Beispiel gebe ich hier den Roaming- Ordner an:

     (gci "C: \ Benutzer \ ramesh \ AppData \ Roaming" -r |? {$ _. PSIsContainer -eq $ True}) | ? {$ _. GetFileSystemInfos (). Count -eq 0} | Gegenstand entfernen 

    Dadurch werden alle leeren Unterordner unter meinem Ordner %appdata% rekursiv %appdata% und es wird keine Ausgabe %appdata%, es sei denn, es treten Fehler auf.

Beachten Sie, dass mit dem obigen PowerShell-Befehl nur die letzte Ebene des leeren verschachtelten Ordners gelöscht wird. Angenommen, Sie haben leere verschachtelte Ordner wie folgt:

 C: \ 1 └───2 └───3 └───4 

Durch Ausführen des obigen Befehls wird der am tiefsten leere Ordner gelöscht → 4 . Durch erneutes Ausführen des Skripts wird eine weitere Ebene eines verschachtelten Ordners ( 3 ) usw. gelöscht.

Sie können das PowerShell-Skript im Svendsen Tech PowerShell-Wiki verwenden, um mit verschachtelten Ordnern zu arbeiten.

Alternativ können Sie die nächste Methode verwenden, eine Windows Scripting-Lösung, um alle leeren Ordner einschließlich verschachtelter Ordner rekursiv zu löschen.

Leere Ordner finden, aber nicht löschen wollen?

Möchten Sie die Liste der leeren Ordner abrufen, diese aber nicht löschen? Verwenden Sie stattdessen dieses Befehlszeilenbeispiel:

 (gci "C: \ Benutzer \ ramesh \ AppData \ Roaming" -r |? {$ _. PSIsContainer -eq $ True}) | ? {$ _. GetFileSystemInfos (). Count -eq 0} | Wählen Sie FullName | Out-GridView 

$config[ads_text6] not found

Der Befehl gibt die Liste der leeren Ordner mit vollständigen Pfaden zu einem Steuerelement für die Rasteransicht aus.

Tipp: In der Rasteransicht können Sie alle auswählen und die Auswahl kopieren, indem Sie Strg + C drücken

Es ist eine gute Idee, eine Vorschau der Liste anzuzeigen, bevor Sie den Befehl zum Löschen der Ordner ausführen.


5. Suchen und entfernen Sie leere Ordner mithilfe von Windows Scripting

Microsoft-Mitarbeiter Jeremy Jameson hat ein VBScript geschrieben, das leere Ordner rekursiv löscht. Ich habe dem Skript weitere Zeilen hinzugefügt, damit leere schreibgeschützte Verzeichnisse gelöscht und die aggregierte Liste der leeren Ordner ausgegeben werden. Außerdem wird die Liste der leeren Ordner ausgegeben, die nicht gelöscht werden konnten, sowie die entsprechende Fehlerbeschreibung.

Das Skript kann verschachtelte leere Verzeichnisse in Unterordnern löschen.

 Option Explicit If (WScript.Arguments.Count 1) Then WScript.Echo ("Verwendung: cscript DeleteEmptyFolders.vbs {path}") WScript.Quit (1) End If Dim strPath: strPath = WScript.Arguments (0) Dim fso: Set fso = CreateObject ("Scripting.FileSystemObject") Dim objFolder: Set objFolder = fso.GetFolder (strPath) Dim sDelList, sDelErr, sFolderPath Dim iCnt iCnt = 0 DeleteEmptyFolders objFolder Unterordner beim Zugriff auf Junctions usw. Für jeden Unterordner im Ordner.SubFolders DeleteEmptyFolders-Unterordner Next On Error Gehe zu 0 If folder.SubFolders.Count = 0 und folder.Files.Count = 0 Dann sFolderPath = folder.Path On Error Resume Next fso.DeleteFolder-Ordner .Path, True Wenn Err.number 0 Dann sDelErr = sDelErr & Err.number & ":" & Err.description & _ vbCrLf & sFolderPath & vbCrLf & vbCrLf Sonst sDelList = sDelList & vbCrLf & sFolderPath ic t = iCnt + 1 End If On Error Gehe zu 0 End If End Sub If sDelList = "" Und sDelErr = "" Dann WScript.Echo "Keine leeren Ordner unter" & _ "" "" & strPath & "" "" gefunden & "tree" WScript.Quit End If If sDelList "" then sDelList = "Liste der gelöschten leeren Ordner" & vbCrLf _ & String (38, "-") & vbCrLf & sDelList & vbCrLf & _ vbCrLf & "Total:" & iCnt & "Ordner gelöscht." Wenn sDelErr "", dann sDelErr = "Diese Ordner konnten nicht gelöscht werden" & _ vbCrLf & String (45, "-") & vbCrLf & sDelErr WScript.Echo sDelList & vbCrLf & vbCrLf & sDelErr 

Kopieren Sie den obigen Code in Notepad und speichern Sie die Datei mit der Erweiterung .vbs, z . B. delempty.vbs .

Sie können das Skript auf zwei Arten ausführen:

über die Eingabeaufforderung, indem Sie Folgendes ausführen:

 cscript.exe delempty.vbs "Ordnerpfad" 

über die GUI durch Ausführen von:

 wscript.exe delempty.vbs "Ordnerpfad" 

über das Menü Senden an

Sie können eine Verknüpfung zum Skript in Ihrem SendTo-Ordner erstellen und es als Leere Ordner löschen bezeichnen.

Klicken Sie dann mit der rechten Maustaste auf einen Ordner, in dem Sie leere Unterordner rekursiv löschen möchten → Klicken Sie auf Senden an → Klicken Sie im Menü Senden an auf Leere Ordner löschen.

Sie sehen die Liste der gelöschten leeren Ordner und die Gesamtzahl sowie Ordner, die mit den entsprechenden angezeigten Fehlercodes nicht gelöscht werden konnten.

Das ist es! Wenn Sie andere Methoden zum Entfernen leerer Ordner in Windows kennen, teilen Sie dies im Kommentarbereich unten mit.

Ähnlicher Artikel