Как удалить файлы старше X дней в Windows
Мы уже показали вам, насколько гибкой может быть оболочка Linux, но это не значит, что Windows отстает. Вот два метода, которые вы можете использовать в зависимости от ваших настроек оболочки, cmd или PowerShell.
PowerShell 3
Get-ChildItem -Path «C: \ Backups» -Recurse | Где-объект CreationTime -lt (Get-Date) .AddDays (-5) | Удалить объект
PowerShell 2
Get-ChildItem -Path «C: \ Backups» -Recurse | Where-Object $ _. CreationTime -lt (Get-Date) .AddDays (-5) | Удалить объект
объяснение
- Сначала мы получаем объекты FileInfo и DirectoryInfo в пути C: \ Backups.
- Оба объекта FileInfo и DirectoryInfo содержат свойство CreationTime, поэтому мы можем отфильтровать коллекцию, используя это.
- Затем оператор -lt (меньше чем) используется для сравнения свойства CreationTime объектов с Get-Date (текущая дата), вычитающим 5 дней.
- Затем мы получаем коллекцию объектов, созданных более 5 дней назад, которые мы передаем в Remove-Item.
Pro Tip
Чтобы увидеть, что будет удалено, вы можете использовать параметр -WhatIf:
Get-ChildItem -Path «C: \ Backups» -Recurse | Где-объект 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"