Mit welchem Befehl suchen Sie leere Verzeichnisse in Windows?
Einige Ordner enthalten möglicherweise versteckte Ordner wie .svn
oder .settings
, sollten jedoch weiterhin als leere Ordner behandelt werden.
windows
powershell
Joshua
quelle
quelle
Antworten:
Am einfachsten kann ich mir ein kleines PowerShell-Skript vorstellen . Wenn Sie Windows 7 ausführen, sollte es bereits installiert sein. Wenn nicht, besuchen Sie Microsoft.com, um es herunterzuladen und zu installieren. Der Link enthält eine detaillierte Beschreibung, aber der Überblick über die Operation ist hier zur Vereinfachung enthalten.
Öffnen Sie PowerShell und geben Sie Folgendes ein:
Ändern Sie C: \ Scripts in das, was Sie durchsuchen möchten. Sie können es sogar auf C: \ setzen, wenn das gesamte Laufwerk überprüft werden soll.
Sie erhalten eine Ausgabe wie diese (beachten Sie, dass dies die leeren Verzeichnisse unter C: \ Scripts sind.
Wenn Sie sich PowerShell ein wenig ansehen, werden Sie sicher herausfinden können, wie Sie leere Ordner automatisch löschen können, wenn Sie möchten (obwohl ich es nur für den Fall empfehle).
Bearbeiten : Wie Richard in den Kommentaren erwähnt hat, verwenden Sie für ein wirklich leeres Verzeichnis:
quelle
?{$_.GetFileSystemInfos().Count -eq 0}
.Das Folgende ist der einfachste Weg, dies mit einer einzigen Codezeile zu erreichen. Es listet die leeren Verzeichnisse am aktuellen Speicherort auf. Wenn eine Rekursion erforderlich ist, kann der Parameter
-Recurse
zum Aufruf von hinzugefügt werdenGet-ChildItem
.Get-ChildItem -Directory | Where-Object { $_.GetFileSystemInfos().Count -eq 0 }
Kurzversion mit Aliasnamen:
dir -Directory | ? {$_.GetFileSystemInfos().Count -eq 0 }
Oder als parametrisierte PowerShell-Funktion (ich habe dies meinem PowerShell-Startprofil hinzugefügt):
Dies kann dann wie jede andere PowerShell-Funktion einschließlich Rohrleitungen aufgerufen werden. Dieser Aufruf würde beispielsweise alle leeren Verzeichnisse im temporären Systemverzeichnis löschen:
Get-EmptyDirectories $env:TMP | del
quelle
Versuche dies
Die Anzahl ist nicht 0, sie existiert überhaupt nicht, was bedeutet, dass das Verzeichnis vollständig leer ist oder andere vollständig leere Ordner enthält
quelle
Danke, ich habe dies als Grundlage für mein Skript verwendet. Ich wollte leere Ordner löschen, aber
Where-Object {$_.GetFiles().Count -eq 0}
wenn ich das versuchte, löschte ich Ordner mit Unterverzeichnissen, die nicht leer waren. Am Ende habe ich eine DO WHILE-Schleife verwendet, um einen Ordner zu entfernen, der keine Dateien oder Ordner hatte. Dann habe ich eine Schleife zurückgesetzt und erneut überprüft, bis das Ende des Baums erreicht ist.quelle