Löschen von Dateien, die älter als X Tage sind, unter Windows
Wir haben Ihnen bereits gezeigt, wie flexibel die Linux-Shell sein kann, aber Windows ist nicht weiter dahinter. Hier sind zwei Techniken, die Sie je nach Shell-Präferenz verwenden können, cmd oder PowerShell.
PowerShell 3
Get-ChildItem -Path "C: \ Backups" -Recurse | Where-Object CreationTime -lt (Get-Date) .AddDays (-5) | Gegenstand entfernen
PowerShell 2
Get-ChildItem -Path "C: \ Backups" -Recurse | Where-Object $ _. CreationTime -lt (Get-Date) .AddDays (-5) | Gegenstand entfernen
Erläuterung
- Zuerst erhalten wir FileInfo- und DirectoryInfo-Objekte im Pfad C: \ Backups.
- FileInfo- und DirectoryInfo-Objekte enthalten beide eine CreationTime-Eigenschaft, sodass wir die Sammlung damit filtern können.
- Der Operator -lt (kleiner als) wird dann verwendet, um die CreationTime-Eigenschaft der Objekte zu vergleichen, wobei Get-Date (das aktuelle Datum) 5 Tage abzieht.
- Es verbleibt dann eine Sammlung von Objekten, die vor mehr als 5 Tagen erstellt wurden. Diese werden an Remove-Item übergeben.
Profi-Tipp
Um zu sehen, was entfernt wird, können Sie den Parameter -WhatIf verwenden:
Get-ChildItem -Path "C: \ Backups" -Recurse | Where-Object CreationTime -lt (Get-Date) .AddDays (-5) | Remove-Item -WhatIf
Eingabeaufforderung
Es wird zwar empfohlen, eine der PowerShell-Methoden zu verwenden, ohne auf Details zu verzichten, können Sie dies jedoch auch über die Eingabeaufforderung tun.
forfiles -p "C: \ Backups" -s -m *. * -d -5 -c "cmd / c del @path"
Profi-Tipp
Um zu sehen, welche Dateien gelöscht werden, können Sie Echo verwenden.
forfiles -p "C: \ Backups" -s -m *. * -d -5 -c "cmd / c echo @file"