PowerShell 3
Get-ChildItem –Path “C:Backups” –Recurse | Where-Object CreationTime –lt (Get-Date).AddDays(-5) | Remove-Item
PowerShell 2
Get-ChildItem –Path “C:Backups” –Recurse | Where-Object{$_.CreationTime –lt (Get-Date).AddDays(-5)} | Remove-Item
Spiegazione
- In primo luogo otteniamo oggetti FileInfo e DirectoryInfo nel percorso C: Backups.
- Gli oggetti FileInfo e DirectoryInfo contengono entrambi una proprietà CreationTime, quindi possiamo filtrare la raccolta usando quello.
- L'operatore -lt (minore di) viene quindi utilizzato per confrontare la proprietà CreationTime degli oggetti con Get-Date (la data corrente) sottrarre 5 giorni.
- Questo ci lascia quindi una collezione di oggetti che sono stati creati più di 5 giorni fa, che passiamo a Remove-Item.
Suggerimento
Per vedere cosa verrà rimosso puoi usare il parametro -WhatIf:
Get-ChildItem –Path “C:Backups” –Recurse | Where-Object CreationTime –lt (Get-Date).AddDays(-5) | Remove-Item –WhatIf
Prompt dei comandi
Mentre ti consigliamo di utilizzare uno dei metodi di PowerShell, senza entrare in nessuno dei grossi dettagli, puoi anche farlo dal prompt dei comandi.
forfiles -p 'C:Backups' -s -m *.* -d -5 -c 'cmd /c del @path'
Suggerimento
Per vedere quali file saranno cancellati puoi usare echo.
forfiles -p 'C:Backups' -s -m *.* -d -5 -c 'cmd /c echo @file'