Заметки сисадмина

Удаление файлов старше n дней

Иногда надо сделать удаление файлов старше n дней. Например Backup’ ы. Можно делать это вручную, отсортировать их по дате и удалить, а можно воспользоваться скриптом. В данном примере мы рассмотрим скрипт для удаления файлов старше n дней и добавим задание в планировщик Windows Server 2012R2.

Удаление файлов старше n дней


Содержание:


1. Скрипт удаления файлов старше n-дней


2. Создание задания в планировщике задач


#Скрипт удаления файлов старше n-дней


Скрипт на самом деле очень простой, создается в PowerShell и выглядит он следующим образом:
FORFILES /p F:\backup\ /s /m *.* /d -30 /c "CMD /c del /Q @FILE"

Где:
F:\backup\ - путь, в какой папке мы будем с вами искать файлы для удаления *.* - имя (маска) файлов /d -30 - старше скольки дней нам необходимо удалить файлы.

Вот так это выглядит в PowerShell:


удалениеОсталось только его выполнить и все.

#Создание задания в планировщике задач


Все хорошо, у нас есть скрипт. Мы можем выполнять его вручную, когда необходимо очистить наши бекапы. Но зачем выполнять это вручную? Мы поручим планировщику запускать наш скрипт и избавимся сами от рутинной работы.

Итак, что нам для этого надо?

Для начала идем в "Пуск -> панель управления -> Администрирование" и запускаем там "Планировщик заданий".

Выбираем пункт "Создать задачу":

На вкладке "Общие" задаем имя задания, его описание и пользователя, от которого оно будет выполняться. По умолчанию там будет пользователь, под которым вы вошли в данный момент в систему.

Далее переходим на вкладку "Триггеры" и создаем расписание, когда мы будем запускать наше задания. У меня настроено в 10:00 каждые 2 дня.

Далее идем на вкладку "Действия" и задаем действие, которое будет выполняться. Выбираем "Запуск программы"

программу или сценарий

и указываем путь до PowerShell:

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe

А аргументе указываем путь до нашего скрипта, который мы создали ранее:

-File "c:\script\ochistkaf.ps1"

Нажимаем "Ок" и еще раз "Ок"

Все, на этом наше задание создано. Осталось дождаться, когда будет выполнено наше действие по расписанию и проверить, все ли правильно было настроено.

 

Поделиться
Комментарии
Анонимус 25.05.2017 11:24
Не работает в планировщики задач, скрипт сам рабочий ...
Admin 25.05.2017 15:39
Странно... У меня все работает отлично на нескольких серверах... Попробуйте поставить галочку "Выполнить с наивысшими правами" А какой код ошибки при выполнении задачи? Можно посмотреть в журнале
Анонимус 25.07.2017 10:37
Все работает правильно на серверных системах , лично проверил. Проблемы были на win 10
Константин 31.10.2017 05:40
Здравствуйте А как сделать чтоб при удалении оставалось допустим последние 3 файла даже если они старше 30 дней?
Admin 01.11.2017 10:25
Самый простой вариант - Вам необходимо выставить в скрипте кол-во дней, которые будут подходить под Ваши файлы!
Мудрый Филин 06.02.2020 07:38
а как сделать так, что бы удалялись файлы каждый 10 минут? Как указать минуты?
Александр 28.02.2020 10:28
У меня ругается вот так. forfiles.exe : ОШИБКА: Неправильный параметр или аргумент - &d&. DeleteFiles.ps1:1 знак:9 + CategoryInfo : NotSpecified: (ОШИБКА: Неправи...аргумент - &d&.:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError
Максим Орлов

Ваш покорный слуга - компьютерщик широкого профиля: системный администратор, вебмастер, интернет-маркетолог и много чего кто. Вместе с Вами, если Вы конечно не против, разовьем из обычного блога крутой технический комплекс.

Оставить комментарий

Ваш Email адрес не будет опубликован. Все обязательные поля обозначены *