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

Иногда надо сделать удаление файлов старше n дней. Например Backup’ы. Можно делать это вручную, отсортировать их по дате и удалить, а можно воспользоваться скриптом. В данном примере мы рассмотрим скрипт для удаления файлов старше n дней и добавим задание в планировщик Windows Server 2012R2.
Содержание:
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"
Нажимаем «Ок» и еще раз «Ок»
Все, на этом наше задание создано. Осталось дождаться, когда будет выполнено наше действие по расписанию и проверить, все ли правильно было настроено.
У меня ругается вот так.
forfiles.exe : ОШИБКА: Неправильный параметр или аргумент — ‘d’.
\DeleteFiles.ps1:1 знак:9
+ CategoryInfo : NotSpecified: (ОШИБКА: Неправи…аргумент — ‘d’.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
а как сделать так, что бы удалялись файлы каждый 10 минут? Как указать минуты?
Здравствуйте
А как сделать чтоб при удалении оставалось допустим последние 3 файла даже если они старше 30 дней?
Самый простой вариант — Вам необходимо выставить в скрипте кол-во дней, которые будут подходить под Ваши файлы!
Все работает правильно на серверных системах , лично проверил.
Проблемы были на win 10
Не работает в планировщики задач, скрипт сам рабочий …
Странно… У меня все работает отлично на нескольких серверах… Попробуйте поставить галочку «Выполнить с наивысшими правами»
А какой код ошибки при выполнении задачи? Можно посмотреть в журнале
Можно ваш скайп ?
Ответил на почту Вам