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

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

Содержание:

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

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

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

Скрипт на самом деле очень простой, создается в PowerShell и выглядит он следующим образом:

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

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

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

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

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

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

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

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

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

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

Читайте также  Почему не обновляется ватсап на андроид

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

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

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

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

Нажимаем «Ок» и еще раз «Ок»

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

Опубликовано shwan в 25.12.2017 25.12.2017

Довольно часто возникает необходимость удаления старых файлов в определенной папке. Чаще всего это нужно для очистки логов или устаревших бэкапов. В данной статье мы рассмотрим PowerShell скрипт для удаления файлов старше n дней.

Для начала нам необходимо запустить специальную утилиту Windows PowerShell ISE. В ней очень удобно писать и отлаживать скрипты. Далее, если ранее вы не использовали powershell, то необходимо предоставить разрешения на выполнения скриптов. Обратите внимание, что для того чтобы изменять политики системы Windows PowerShell ISE необходимо запускать от имени администратора.

Вводим команду и нажимаем ввод. Нам будет показано окно запроса подтверждения. Нажимаем «Да».

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

Теперь напишем сам скрипт. Выглядеть он будет следующим образом:

Данный скрипт выполнит удаление всех файлов и вложенных папок в указанной директории.

Теперь нам остается только сохранить данный скрипт в файл и выполнять его вызов при необходимости или настроив автоматический запуск скрипта в планировщике задач Windows.

Удаление файлов через cmd утилитой forfiles.exe

Пример как с ее помощью можно удалять бекапы старше 20 дней:

Читайте также  Программа скачивания музыки с контакта на компьютер

forfiles.exe /p С:Backup /s /m *.* /d -20 /c «cmd /c del /q /f @file»

обычный батник — и вуаля само делает неинтересную работу..

справка по FORFILES

FORFILES [/P ] [/M ] [/S]

Выбор файла (или набора файлов) и выполнение команды

с этим файлом. Программа полезна для пакетных заданий.

/P Путь, с которого начинается поиск.

По умолчанию используется текущая

/M Поиск файлов с помощью маски.

Маска поиска по умолчанию «*» .

/S Рекурсивное выполнение программы forfiles

во всех подпапках, аналогично «DIR /S».

/C Команда, которая выполняется для каждого файла.

Строки команд необходимо заключать в прямые

Команда по умолчанию «cmd /c echo @file».

Следующие переменные могут использоваться

в строке команды:

@file — возвращает имя файла.

@fname — возвращает имя файла без

@ext — возвращает только расширение имени

@path — возвращает полный путь к файлу.

@relpath — возвращает относительный путь к

@isdir — возвращает значение «TRUE», если типом

файла является папка, и «FALSE» для файлов.

@fsize — возвращает размер файла

@fdate — возвращает дату последнего изменения

@ftime — возвращает время последнего изменения

Для включения специальных символов в строку команды

следует использовать шестнадцатеричный код символа

в формате 0xHH (например, 0x09 для табуляции).

Перед внутренними командами CMD.exe необходимо ставить

/D Выбор файлов, у которых дата последнего изменения

больше или равна (+) либо меньше или равна

(-) указанной дате при использовании формата

«dd.MM.yyyy»; либо файлов, у которых дата последнего

изменения больше или равна (+)

текущей дате плюс «dd» дней либо меньше или

равна (-) текущей дате минус «dd» дней.

Допустимым числом дней «dd» является любое

число в диапазоне 0 — 32768.

Читайте также  Решение уравнений в excel подбор параметра

«+» используется по умолчанию, если знак не указан.

/? Вывод справки по использованию.

FORFILES /P C:WINDOWS /S /M DNS*.*

FORFILES /S /M *.txt /C «cmd /c type @file | more»

FORFILES /P C: /S /M *.bat

FORFILES /D -30 /M *.exe

/C «cmd /c echo @path 0x09 был изменен 30 дней назад»

FORFILES /D 01.01.2001

/C «cmd /c echo @fname является новым с 1-янв-2001»

FORFILES /D +25.1.2011 /C «cmd /c echo @fname является новым сегодня»

FORFILES /M *.exe /D +1

FORFILES /S /M *.doc /C «cmd /c echo @fsize»

Ссылка на основную публикацию
Adblock detector