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

Хочу сегодня показать вам очередной скрипт PowerShell. В этот раз – для удаления старых файлов и пустых папок. Такой скрипт может пригодиться для отчистки, например файловых серверов, или каких-нибудь временных или обменных папок.

Скачать скрипт можно ]]> тут ]]> . Скрипт на ]]> GitHub ]]> .

Пару слов, о том, что тут происходит.

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

В этом участке мы находим все файлы, которые подходят под наши критерии. А также сортируем список, что бы всё шло от большего пути к меньшему. Это нужно, если у вас будут вложенные папки, что бы скрипт всегда сперва удалял файлы, а потом уже пытался удалить папку, где расположены эти папки.

Собственно, удаляем файл.

Тут мы удаляем папку, но перед ее удалением, проверяем, что бы она была пустая.

По сути, это повторение уже проделанной операции. Но тут мы проходимся по всем папкам, ищем пустые папки и удаляем их.

Такой вот не хитрый, но думаю весьма полезный в хозяйстве скриптик. Надеюсь, информация окажется вам полезной.

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

Читайте также  Радиотехника у 7101 стерео схема

Содержание:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Полезная информация об администрировании пользовательских и серверных ОС Windows.

Допустим у вас есть папка C:BACKUPS, где ежедневно создается подпапка с бэкапом. Со временем бэкапов скапливается много, а чтобы автоматизировать процесс их удаления, можно в планировщик поставить следующий скрипт:

forfiles -p C:BACKUP -m * -d -180 -c «cmd /c rd /s /q @path»

forfiles выдает список папок в C:BACKUP старше 180 дней и выполняет команду

которая удаляет все папки из списка (ключ /s означает удаление папки вместе со всеми подпапками и файлами, /q — не спрашивать подтверждение при удалении)

forfiles можно использовать также с аргументом -s, в этом случае будет рекурсивный просмотр, и в списке будут также все содержащиеся в папках файлы.

Удаление папок с файлами через скрипт : 3 комментария

Ошибочка, скрипт должен выглядеть так forfiles -p «C:BACKUP» -m * -d -180 -c «cmd /c rd /s /q @path»

Вообщем кавычки сверху

Да действительно, с ёлками не работает, но у меня он както неправильно отработал, изменил 180 на 7, по идее должен удалить всё что старше 7 дней,а он затёр абсолютно всё кроме предыдущего дня…

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