Ti abbiamo già mostrato quanto può essere flessibile la shell di Linux , ma questo non vuol dire che Windows sia ulteriormente indietro. Ecco due tecniche che puoi utilizzare a seconda delle tue preferenze di shell, cmd o PowerShell.
PowerShell 3
Get-ChildItem –Path "C: \ Backups" –Recurse | Where-Object CreationTime –lt (Get-Date) .AddDays (-5) | Rimuovi oggetto
PowerShell 2
Get-ChildItem –Path "C: \ Backups" –Recurse | Where-Object{$_.CreationTime –lt (Get-Date).AddDays(-5)} | Rimuovi oggetto
Spiegazione
- Innanzitutto otteniamo gli oggetti FileInfo e DirectoryInfo nel percorso C: \ Backups.
- Gli oggetti FileInfo e DirectoryInfo contengono entrambi una proprietà CreationTime, quindi possiamo filtrare la raccolta usando quella.
- L'operatore –lt (minore di) viene quindi utilizzato per confrontare la proprietà CreationTime degli oggetti con Get-Date (la data corrente) sottraendo 5 giorni.
- Questo poi ci lascia con una raccolta di oggetti che sono stati creati più di 5 giorni fa, che passiamo a Remove-Item.
Suggerimento professionale
Per vedere cosa verrà rimosso puoi utilizzare il parametro –WhatIf:
Get-ChildItem –Path "C: \ Backups" –Recurse | Where-Object CreationTime –lt (Get-Date) .AddDays (-5) | Remove-Item –WhatIf
Prompt dei comandi
Sebbene ti consigliamo di utilizzare uno dei metodi PowerShell, senza entrare in nessuno dei dettagli grintosi puoi farlo anche dal prompt dei comandi.
forfiles -p "C: \ Backups" -s -m *. * -d -5 -c "cmd / c del @path"
Suggerimento professionale
Per vedere quali file verranno eliminati puoi usare echo.
forfiles -p "C: \ Backups" -s -m *. * -d -5 -c "cmd / c echo @file"