Мы уже показали вам, насколько гибкой может быть оболочка Linux, но это не значит, что Windows отстает. Вот два метода, которые вы можете использовать в зависимости от ваших настроек оболочки, cmd или PowerShell.
PowerShell 3
Get-ChildItem – путь «C: \ Backups» – возврат | Where-Object CreationTime –lt (Get-Date) .AddDays (-5) | Удалить объект
PowerShell 2
Get-ChildItem – путь «C: \ Backups» – возврат | Where-Object {$ _. CreationTime –lt (Get-Date) .AddDays (-5)} | Удалить объект
Объяснение
- Сначала мы получаем объекты FileInfo и DirectoryInfo в пути C: \ Backups.
- Оба объекта FileInfo и DirectoryInfo содержат свойство CreationTime, поэтому мы можем фильтровать коллекцию, используя это.
- Затем оператор –lt (меньше чем) используется для сравнения свойства CreationTime объектов с Get-Date (текущая дата), вычитающим 5 дней.
- Затем мы получаем коллекцию объектов, созданных более 5 дней назад, которую мы передаем Remove-Item.
Профессиональный совет
Чтобы увидеть, что будет удалено, вы можете использовать параметр –WhatIf:
Get-ChildItem – путь «C: \ Backups» – возврат | 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”
Профессиональный совет
Чтобы увидеть, какие файлы будут удалены, вы можете использовать echo.
forfiles -p “C: \ Backups” -s -m *. * -d -5 -c “cmd/c echo @file”