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 дней назад, и мы переходим к Remove-Item.
Pro Tip
Чтобы увидеть, что будет удалено, вы можете использовать параметр -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'
Pro Tip
Чтобы узнать, какие файлы будут удалены, вы можете использовать echo.
forfiles -p 'C:Backups' -s -m *.* -d -5 -c 'cmd /c echo @file'