Ноября последний пост…
При написании bat’ника для резервирования столкнулся с необходимостью зачистки неактуальных файлов в целевой папке. Методы самого batch мне показались громоздкими и я решил, что куда проще «пришить» к скрипту командлет PowerShell. Из требований: чтобы всё умещалось в одну строку и умело исключать из отбора сам *.bat.
Получилось вот такое чудо:
Get-ChildItem 'D:\backup' -Recurse -Exclude *.bat -File | Where CreationTime -lt (Get-Date).AddDays(-3) | Remove-Item -Force
Командлет получает список файлов из D:\backup, исключает из отбора файл bat-скрипта (по маске) и удаляет всё остальное, что было создано ранее последних трёх дней.
Теперь помещаем этот командлет в bat:
rem Какой-то код на batch powershell -executionpolicy bypass -command "Get-ChildItem 'D:\backup' -Recurse -Exclude *.bat -File | Where CreationTime -lt (Get-Date).AddDays(-3) | Remove-Item -Force"