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
обяснение
- На първо място получавате обекти FileInfo и DirectoryInfo в C: Backups.
- Файловете FileInfo и DirectoryInfo съдържат свойство CreationTime, за да можем да филтрираме колекцията с нея.
- След това операторът -lt (по-малко от) се използва за сравняване на собствеността CreationTime на обектите с Get-Date (текущата дата), изваждане на 5 дни.
- Това ни оставя колекция от обекти, създадени преди повече от 5 дни, които преминаваме към Премахване на елемента.
Професионален съвет
За да видите какво ще бъде премахнато, можете да използвате параметъра -WhatIf:
Get-ChildItem –Path “C:Backups” –Recurse | Where-Object CreationTime –lt (Get-Date).AddDays(-5) | Remove-Item –WhatIf
Командния ред
Докато ви препоръчваме да използвате един от методите PowerShell, без да се вмъквате в някоя от детайлите, можете да го направите и от командния ред.
forfiles -p 'C:Backups' -s -m *.* -d -5 -c 'cmd /c del @path'
Професионален съвет
За да видите кои файлове ще бъдат изтрити, можете да използвате ехо.
forfiles -p 'C:Backups' -s -m *.* -d -5 -c 'cmd /c echo @file'