Dateien und Ordner nach Alter löschen mit Powershell und Batch

powershell placeholder

Jeder Administrator kennt das Problem mit dem Löschen von alten Verzeichnisstukturen und Dateien. Spätestens wenn der Server voll fängt man damit an und ganz wild sucht man sich die Codeschnipsel via Google aus dem Netz.

Etwas old-school aber hin und wieder tatsächlich noch nützlich, kann man alte Ordner und Dateien auch via BATCH rekursiv und nach Dateialter löschen lassen.

mit Batch / DOS Kommandozeile

Dafür machen wir uns den Befehel „Forfiles.exe“ zu nutze. Ersetzt einfach <number of days> durch die Anzahl der Tage die eine Datei bzw. ein Ordner alt sein soll. Der Pfad des Ordners wird bei „<Zielordner>“, am besten in Anführungsstrichen angegeben.

forfiles -p "<Zielordner>" -s -m *.* -d <number of days> -c "cmd /c del @path"

Beispiel:

forfiles -p "C:\backup" -s -m *.* -d 30 -c "cmd /c del @path"

Wer mehr über die Möglichkeiten von „forfiles.exe“ erfahren möchte, ruft den Befehl mit dem Hilfeparamter „/?“ auf.

mit Powershell alte Dateien und Ordner löschen

Das Ganze geht natürlich auch mit den modernen Mitteln die Windows zu bieten hat, mit Powershell.

gci "C:\backup" -recurse | ?{!$_.PSIsContainer -and $_.LastWriteTime -lt (Get-date).AddDays(-30)} | Remove-Item -Force

weitere Beiträge zu dem Thema Powershell