Как удалить файлы в Powershell старше определенной даты


07 июля 2019


Удаление файлов через Powershell старше даты

Для того, что бы через powershell удалить файлы старше даты сначала нужно установить дату, которая нам нужна:

$date = Get-Date -Year 2017 -Month 12 -Day 31 -Hour 23

Можно дату задать несколькими днями назад. Это удобно для скриптов, которые будут все время висеть в планировщике:

$date = (Get-Date).AddDays(-15)

На моем примере дата получится в таком формате:

Установка даты datetime в Powershell

Т.к. я не установил минуты и секунды - они взялись по умолчанию из текущего дня. Если мы не установим год, например, то он будет текущим 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

 

...

Теги: #powershell


Каналы
Telegram FixMyPc Telegram Лента FixMyPC RSS Rss
Популярные тэги
О блоге
Этот блог представляет собой конспекты выученного материала, приобретённого опыта и лучшие практики в системном администрировании и программировании.