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

Одной из особенностей последних версий Windows 10 является способность поддерживать себя в чистоте, автоматически удаляя ставшие ненужными по истечении определённого срока файлы. В более ранних версиях системы, в которых эта функция ещё не реализована, для удаления старых файлов можно использовать командную строку , консоль PowerShell и даже Проводник , хотя процедура очистки с помощью последнего не так удобна.

Рассмотрим все три варианта.

Удаление старых файлов с помощью Проводника

Лента Проводника Windows 10 и 8.1 содержит инструмент, который позволяет отсортировать все файлы в каталоге по дате изменения, типу, размеру и некоторым другим свойствам. Допустим, вы хотите удалить файлы старше одного месяца. Зайдите в папку с залежавшимися в ней файлам и нажмите на клавиатуре F3 . При этом вы будете переключены в ленте Проводника в раздел поиска.

Кликните по иконке «Дата изменения» и выберите в выпадающем списке нужный период времени, в данном случае месяц.

Проводник тут же отсортирует все файлы по заданному параметру, так что вам останется только выделить их мышкой и отправить в Корзину. Способ простой, но не особо удобный, поскольку всё приходится делать руками. Есть куда более эффективный метод удаления старых файлов и сейчас как раз мы его рассмотрим.

Удаление старых файлов в командной строке

Для удаления файлов с «истёкшим сроком годности» мы будем использовать консольную утилиту ForFiles.exe , отвечающую за выбор объекта и выполнение с ним указанного действия. Утилита поддерживает несколько параметров, а именно:

/S - позволяет выполнять рекурсивный поиск.
/P - указывает путь к разделу или каталогу.
/D - указывает количество дней с момента последней модификации.
/C - задаёт команду действия над файлом.

В команде ForFiles также можно указывать возвращающие различные значения переменные, например, @file , которая возвращает имя файла и которую мы будем использовать. Удалим для примера все файлы старше 10 дней в папке «Картинки» , лежащей в корне системного диска.

Открываем командную строку и выполняем такую команду:

ForFiles /p "C:\Картинки" /s /d -10 /c "cmd /c del @file"

ForFiles / p "C:\Картинки" / s / d - 10 / c "cmd /c del @file"

В примере используются три ключа /p (путь) , /s (рекурсия) и /d (количество дней) , а также команда удаления del и переменная имени файла @file . Как только мы нажмём ввод, ForFiles пробежится по всему содержимому папки «Картинки» , включая вложенные каталоги и удалит все файлы старше 10 дней .

Как видите, этот способ более эффективный и быстрый, кроме того, вы можете его автоматизировать, создав для него задания в Планировщике.

Примечание: после выполнения команды в консоли может вывестись сообщение, что не удается найти некий файл. Не обращайте внимание, обычно это скрытый файл базы данных, отвечающий за настройки каталога. Если в папке его нет (а быть, по идее, должен) , ForFiles уведомляет об этом пользователя.

Удаление старых файлов с помощью PowerShell

Здесь практически всё то же самое, что и в примере с командной строкой, разве что синтаксис иной. Предположим, что ни путь к папке с файлами, ни цели у нас не изменились. Запускаем консоль PowerShell и выполняем команду такого вида.

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

1.

2.

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

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

FORFILES /p F:\backup\ /s /m *.* /d -30 /c "CMD /c del /Q @FILE"

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

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

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

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

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

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

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

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

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

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

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

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

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

File "c:\script\ochistkaf.ps1"

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

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