Mit der Windows PowerShell ältere Dateien auflisten und gegebenenfalls auch löschen

Mit Hilfe der Windows Powershell Dateien mit einem bestimmten Bearbeitungsdatum auflisten

Grundsätzliches

Nicht selten hat man auf einem Windows System viele Dateien liegen. Interessant dabei ist u.a. das alter der Dateien. Um hier evtl. Dateileichen ausfindig zu machen, gibt es in der PowerShell ein paar Cmdlets mit welchen man das Alter der Dateien auslesen kann. Ein weiterer mögliche Schritt wäre dann evtl. die Löschung dieser Daten. Klar geht das auch mit dem Windows Explorer, jedoch braucht man dafür doch immer einige Klicks. Schneller ist man in der Regel immer mit der Kommandozeile. In diesem Beispiel verwende ich die PowerShell, da sie im Windows Scripting Bereich die Zukunftstechnologie ist.

Daten nach letzter Änderung auflisten

Hilfreich ist als Erstes das Cmdlet Get-ChildItem mit dem Parameter Recurse. Hier wird ein Pfad ausgewählt, welche rekursiv (also auch mit dessen Unterordner) durchsucht wird. Das Ergebnis wird anschließend nach dessen Bearbeitungsdatum durchsucht.

Get-ChildItem "d:Dokumente" -Recurse | Where-Object {$_.LastWriteTime}

Daten die älter als ein Jahr sind auflisten

Jetzt werde allen Dateien mit dem Erstellungdatum aufgelistet. Jetzt möchte man im nächsten Schritt allerdings, dass nur die Dateien aufgelistet werden, welche ein bestimmtes Alter haben. Im Beispiel sollen allen Dateien aufgelistet werden, welche bereits ein Jahr (365 Tage) alt sind.

Get-ChildItem "d:Dokumente" -Recurse |-Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-365))}

Nur Bilddateien die älter als ein Jahr sind aufflisten

Das tolle an der Windows Powershell ist natürlich, dass man jederzeit noch viele Erweiterungen hinzufügen kann. So wäre jetzt auch noch denkbar, dass man nur bestimmte alte Dateiarten anzeigen lässt. Im Beispiel sollten alle Bilder, welche älter als ein Jahr sind aufgelistet werden

Get-ChildItem "d:Dokumente" -Recurse |-Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-365) -and ($_.Extension -match "jpg"))}

Alle Bilddateien die älter als ein Jahr sind löschen

Als letzten Schritt könne man sich noch überlegen, dass die gefundenen Dateien gelöscht werden. Hier hängt man mittels der Pipe nur noch das Cmdlet Remove-Item an. Schon werden sämtliche so gefundenen Dateien gelöscht. Bevor man allerdings die Daten löscht, solle man sich die Daten schon genau ansehen, nicht das hier noch wichtig Unterlagen dabei sind.

Get-ChildItem "d:Dokumente" -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-365) -and ($_.Extension -match "jpg"))} | Remove-Item

Download und Fazit

Gerade die Windows PowerShell bietet für diese Art von Aufgaben enormes Potenzial. Klar für einen Heimanwender reicht auch mal der Windows Explorer aus. Wie sieht es allerdings aus, wenn man mehrere Windows Server betreibt. So z.B. auch einen Dateiserver. Hier denke ich, ist es durchaus sehr interessant sich die Daten auflisten zu lassen, welche schon eine längerer Zeit nicht mehr benötigt wurden. Natürlich muss man diese nicht gleich löschen, aber evtl. könnte man diese Wegsichern so dass man z.B. wieder mehr Speicherplatz auf dem System erhält. Die einzelnen Cmdlets habe ich in ein Script verpackt, welchem man die verschiedenen Parameter wie, Dateipfad, Alter der Dateien oder Dateifilter übergeben kann. Gerne könnt ihr euch das Script hier downloaden:

Hinterlasse jetzt einen Kommentar

Kommentar hinterlassen

E-Mail Adresse wird nicht veröffentlicht.


*