V-am arătat deja cât de flexibil poate fi shell-ul Linux , dar asta nu înseamnă că Windows se află în urmă. Iată două tehnici pe care le puteți utiliza în funcție de preferințele dvs. de shell, cmd sau PowerShell.
PowerShell 3
Get-ChildItem –Path „C: \ Backups” –Recurse | Where-Object CreationTime –lt (Get-Date) .AddDays (-5) | Eliminați-articolul
PowerShell 2
Get-ChildItem –Path „C: \ Backups” –Recurse | Where-Object{$_.CreationTime –lt (Get-Date).AddDays(-5)} | Eliminați-articolul
Explicaţie
- În primul rând, obținem obiectele FileInfo și DirectoryInfo în calea C: \ Backups.
- Obiectele FileInfo și DirectoryInfo conțin ambele o proprietate CreationTime, astfel încât să putem filtra colecția folosind aceasta.
- Operatorul –lt (mai puțin de) este apoi folosit pentru a compara proprietatea CreationTime a obiectelor cu Get-Date (data curentă) scade 5 zile.
- Acest lucru ne lasă apoi cu o colecție de obiecte care au fost create în urmă cu mai mult de 5 zile, pe care le trecem la Remove-Item.
Pro Tip
Pentru a vedea ce va fi eliminat, puteți utiliza parametrul –WhatIf:
Get-ChildItem –Path „C: \ Backups” –Recurse | Where-Object CreationTime –lt (Get-Date) .AddDays (-5) | Remove-Item –WhatIf
Prompt de comandă
În timp ce vă recomandăm să utilizați una dintre metodele PowerShell, fără a intra în niciunul dintre detaliile dificile, puteți face acest lucru și din promptul de comandă.
forfiles -p "C: \ Backups" -s -m *. * -d -5 -c "cmd / c del @path"
Pro Tip
Pentru a vedea ce fișiere vor fi șterse, puteți utiliza ecoul.
forfiles -p "C: \ Backups" -s -m *. * -d -5 -c "cmd / c echo @file"