Для того, что бы через powershell удалить файлы старше даты сначала нужно установить дату, которая нам нужна:
$date = Get-Date -Year 2017 -Month 12 -Day 31 -Hour 23
Можно дату задать несколькими днями назад. Это удобно для скриптов, которые будут все время висеть в планировщике:
$date = (Get-Date).AddDays(-15)
На моем примере дата получится в таком формате:
Т.к. я не установил минуты и секунды - они взялись по умолчанию из текущего дня. Если мы не установим год, например, то он будет текущим 2019.
Получение списка файлов для последующего удаления в Powershell
Далее нам нужно использовать Get-Childitem для того что бы получить все файлы:
$for_delete = Get-ChildItem -Path "C:\TestFolder\" -Include "*.txt" -Recurse
Где:
- Path - путь до директории
- Include - включает, в моем случае, все файлы которые кончаются на txt
- Recurse - поиск файлов не только в текущей папке, но и в подпапках.
У файла есть несколько свойств c датами (datetime). Все их увидеть можно так:
$for_delete | Get-Member | Where-Object -Property Definition -Like "*date*"
- CreationTime
- CreationTimeUtc
- LastAccessTime
- LastAccessTimeUtc
- LastWriteTime
- LastWriteTimeUtc
UTC значит, что дата будет в формате всемирного времени.
Удаление через powershell файлов старше даты
Меня интересует удаление файлов по дате создания. Для этого сделаем так:
$for_delete | Where-Object -Property CreationTime -gT $date | Remove-Item
Т.е. для каждого файла где свойство CreationDate (дата создания файла) LessThen (больше чем) дата в переменной произвести удаление. Таким образом мы удалили в powershell файлы старше определенной даты. Мы можем использовать и другие операторы сравнения:
- lt - меньше
- le - меньше или равно
- gt - больше
- ge - больше или равно
- ne - не равно
Скрипт удаления файлов старше n дней через Powershell
Готовый скрипт по удалению файлов:
#Дата с которой сравнивать. В этом случае -15 дней от текущей даты
$date = (Get-Date).AddDays(-15)
#Или дата кастомная. Пустые значения будут взяты из текущего времени и даты
$date = Get-Date -Year 2018 -Month 12 -Day 2 -Hour 12 -Minute 13
#Путь до директории откуда удалять файлы
$path = "C:\TestFolder\"
#Удаление всех файлов и папок (в т.ч. внутри папок) старше чем значение в $date
Get-ChildItem -Recurse -Path $path | Where-Object -Property CreationTime -gT $date | Remove-Item
...
Подписывайтесь на наш Telegram канал
Теги: #powershell