Leere Ordner löschen per Powershell

Ich habe in meinem Blog bereits einige Windows Powershell Skripte vorgestellt, bei denen es um das Verschieben oder Löschen von Dateien geht. Da mir in diesem Zusammenhang immer wieder die Frage gestellt wurde, wie man den automatisch leere Ordner löschen könne, möchte ich dieses in diesem Artikel kurz beschreiben.

DQo8cD48YnIvPg0KPHNjcmlwdCBhc3luYyBzcmM9Imh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2pzL2Fkc2J5Z29vZ2xlLmpzIj48L3NjcmlwdD4NCjwhLS0gVEVDSEZBUSAtIEltIEFydGlrZWwgLS0+DQo8aW5zIGNsYXNzPSJhZHNieWdvb2dsZSINCiAgICAgc3R5bGU9ImRpc3BsYXk6YmxvY2siDQogICAgIGRhdGEtYWQtY2xpZW50PSJjYS1wdWItOTI5NDg1MzEyMDc1NDI3OSINCiAgICAgZGF0YS1hZC1zbG90PSI1MDc3NjQ3MTY5Ig0KICAgICBkYXRhLWFkLWZvcm1hdD0iYXV0byINCiAgICAgZGF0YS1mdWxsLXdpZHRoLXJlc3BvbnNpdmU9InRydWUiPjwvaW5zPg0KPHNjcmlwdD4NCiAgICAgKGFkc2J5Z29vZ2xlID0gd2luZG93LmFkc2J5Z29vZ2xlIHx8IFtdKS5wdXNoKHt9KTsNCjwvc2NyaXB0Pjxici8+PC9wPg0K

Leere Ordner mit Powershell löschen

Die meisten der Anfragen wurden mir in Bezug auf den Artikel „Dateien löschen, die älter sind als x Tage“ gestellt. Als Folge dieses Skriptes wurden verwaiste Verzeichnisse nicht entfernt, nachdem sich keine Dateien mehr darin befanden. In bestimmten Umgebungen kann das auch so gewollt sein, aber meistens werden die Verzeichnisse dann auch nicht mehr benötigt.

Powershell bietet hierfür zwar kein Standard Cmdlet an, aber es ist sehr leicht, sich für diesen Zweck eine eigene Funktion zu schreiben. Das folgende kurze Skript erstellt eine neue Funktion, mit der Du leere Ordner löschen und auch untergeordnete Verzeichnisse entfernen kannst..

function Remove-EmptyFolders([string]$folders){
   Get-Childitem $folders -Recurse | Where-Object {$_.PSIsContainer -and !(Get-Childitem $_.Fullname -Recurse | 
   Where-Object {!$_.PSIsContainer})} | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue
}

Die Funktion ist anschließend über den Befehl Remove-EmptyFolders verfügbar. Als Parameter muss lediglich der Ordner mitgegeben werden, in welchem letztlich nach leeren Verzeichnissen gesucht werden soll. Bedeutet, dass alle leeren Unterverzeichnisse dieses Ordners entfernt werden.

Mit dem folgenden Beispiel werden somit alle Unterordner des Ordners C:\Temp\Test gelöscht:

Remove-EmptyFolders C:\Temp\Test

Als Parameter kann natürlich auch eine Variable angegeben werden, in welcher der Ordner gespeichert wurde. Das ist besonders nützlich bei Skripten, die auf bestimmte Ordnerstrukturen angewendet werden.

Ebenfalls interessant:

Dieser Artikel ist wie alle anderen auf dieser Seite kostenlos für Dich und ich hoffe, ich konnte Dir weiterhelfen. Wer möchte, kann diesem Blog eine kleine Aufmerksamkeit in Form einer kleinen Spende (PayPal) oder über die Amazon Wunschliste zukommen lassen.

1 Gedanke zu „Leere Ordner löschen per Powershell“

Schreibe einen Kommentar