Удаление файлов по расписанию windows

Удаление файлов по расписанию windows

Можно использовать утилиту командной строки forfiles.exe, входящую в состав Windows 7 (когда-то она входила в Windows 2000 Resource Kit). Одной командой удаляются все файлы из указанной папки и вложенных в нее.

Команда для выполнения

forfiles.exe /p

/s /m *.* /d -7 /c “cmd /c del /q /f @file”

указываем свою папку (параметр /p)

  • Возраст файлов по умолчанию 7 дней (параметр /d), но вы можете задать любое значение
  • Можно удалять файлы определенного расширения по маске (например, /m *.tmp)
  • За рекурсивное удаление (во вложенных папках) отвечает параметр /s

Конечно, в скрипте вы можете использовать несколько команд, каждая из которых будет удалять заданную папку. Справка по использованию утилиты вызывается командой forfiles /?.

FORFILES [/P ] [/M ] [/S]
[/C ] [/D [+ | -] ]

Описание.
Выбор файла (или набора файлов) и выполнение команды
с этим файлом. Программа полезна для пакетных заданий.

Параметры:
/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 необходимо ставить “cmd /c”.

/D Выбор файлов, у которых дата последнего изменения больше или равна (+) либо меньше или равна (-) указанной дате при использовании формата “dd.MM.yyyy”; либо файлов, у которых дата последнего изменения больше или равна (+) текущей дате плюс “dd” дней либо меньше или равна (-) текущей дате минус “dd” дней.
Допустимым числом дней “dd” является любое число в диапазоне 0 – 32768. “+” используется по умолчанию, если знак не указан.

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

Примеры:
FORFILES /?
FORFILES
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 +2.4.2015 /C “cmd /c echo @fname является новым сегодня”
FORFILES /M *.exe /D +1
FORFILES /S /M *.doc /C “cmd /c echo @fsize”
FORFILES /M *.txt /C “cmd /c if @isdir==FALSE notepad.exe @file”

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

Для отправки комментария вам необходимо авторизоваться.

Как вы удаляете временные файлы? Вручную запускаете CCleaner или аналогичную программу, либо настроили ее запуск по расписанию? Я обхожусь встроенными средствами Windows, причем все сводится буквально к одной команде. Я хочу поделиться с вами двумя скриптами, которые давно служат мне верой и правдой для удаления ненужных файлов.

В Windows есть утилита для очистки диска, которую можно настроить для удаления заданных категорий файлов по расписанию. Она легко справится с очисткой временных файлов из расположений, известных системе, но не позволит удалять ненужные файлы из заданной вами папки. С помощью скриптов можно очищать не только временные файлы, но и любую папку. Например, я удаляю файлы из папок Test и Temp, которые служат для экспериментов и временного хранения файлов как в загрузках, так и документах.

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

Эти скрипты позволяют удалять только файлы заданного «возраста» вместо полной очистки папки.

В статье вы найдете примеры скриптов и рассказ о том, как настроить задачу в планировщике одной командой. Вы также сможете скачать готовые файлы и создать задание для очистки папок за пару минут.

Скрипты

Вы можете воспользоваться на выбор скриптами CMD, VBS и PowerShell.

Можно использовать утилиту командной строки forfiles.exe, входящую в состав Windows 7 и новее (когда-то она входила в Windows 2000 Resource Kit). Одной командой удаляются все файлы из указанной папки и вложенных в нее.

Команда для выполнения

  • Вместо %temp% (временной папки в профиле) подставьте свою папку (параметр /p)
  • Возраст файлов по умолчанию 14 дней (параметр /d), но вы можете задать любое значение
  • Можно удалять файлы определенного расширения по маске (например, /m *.log)
  • За рекурсивное удаление (во вложенных папках) отвечает параметр /s

Конечно, в скрипте вы можете использовать несколько команд, каждая из которых будет удалять заданную папку. Справка по использованию утилиты вызывается командой forfiles /?.

Приведенный ниже скрипт VBS удаляет все файлы и папки, включая защищенные, с выводом списка удаленных файлов.

  • Файлы удаляются по дате изменения. Чтобы удалять по дате создания, замените .DateLastModified на .DateCreated
  • Если не хотите удалять защищенные файлы, закомментируйте строку
    ‘ oI.Attributes = 0

Команда для выполнения

Скрипт можно запускать из командного файла (CMD).

  • Вместо %windir% emp подставьте свою папку (в этом примере удаляются файлы из временной папки в системном каталоге)
  • Возраст файлов по умолчанию 14 дней, но вы можете задать любое значение
  • Список удаленных файлов будет по умолчанию сохранен в файле %windir%system32MyCleanupScript.Log, хотя можно указать любой путь и имя файла
Читайте также:  Как вконтакте включить прямой эфир

Как и в случае с утилитой forefiles.exe, можно реализовать очистку различных папок, указав каждую в отдельной команде.

PowerShell

Скрипт на PowerShell был в блоге Сергея Мариничева в рамках урока об операциях с файлами, но теперь страница доступна только в архиве интернета. Я скопировал ключевое содержимое для вас:

Выполнение очистки по расписанию

Для выполнения очистки папки по расписанию нужно создать скрипт с именем cleanup.cmd, содержащий команду для запуска, и скопировать его в любую папку из PATH (например, %windir%system32). Поместите туда же скрипт VBS или PowerShell, если вы решили использовать его, а не утилиту forfiles.ехе.

Задание в планировщике создается одной командой:

Задание с именем CleanUp будет выполняться:

  • с наивысшими правами (параметр /RL)
  • раз в неделю (параметр /SC)
  • по воскресеньям (параметр /D)
  • в 14:00 (параметр /ST)

Откройте Пуск – Поиск – Планировщик заданий и вы увидите в библиотеке планировщика задание CleanUp.

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

Готовые файлы

Загрузите архив и распакуйте в любую папку. В архиве варианты forfiles и VBS.

  1. Задайте путь к папке и возраст файлов в скрипте CleanUp.cmd в одной из папок (каждая соответствует одному из описанных выше способов), после чего скопируйте все содержимое папки в %windir%system32.
  2. Щелкните правой кнопкой мыши на файле schedule.cmd и выберите Запуск от имени администратора, чтобы создать задание.

Благодарности

Авторами скриптов, которые я когда-то почерпнул из этой темы конференции OSZone, являются Keeper2006 и amel27 соответственно. В этой же теме вы найдете другие интересные варианты решения данной задачи, и туда же следует направлять вопросы по доработке скриптов под свои нужды.

А как вы избавляетесь от ненужных файлов – программой или скриптом? Настроена ли у вас очистка по расписанию?

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

Вадим является владельцем этого блога, и большинство записей здесь вышло из-под его пера. Подробности о блоге и авторе здесь.

Вас также может заинтересовать:

Подпишитесь на бесплатные уведомления о новых записях и получите в подарок мою книгу об ускорении загрузки Windows!

комментариев 75

Великолепно! Взял на вооружение. Сам чищу по расписанию планировщика заданий следующим скриптом:

Спасибо за статью. Заинтересовала. Я удаляю с помощью ccleaner. Но ваш метод мне тоже понравился. Обязательно попробую. Много нового узнаю из вашего блога, но проблема в том, что обычный пользователь не будет заниматься настройкой. Я помню, когда я научилась содержать компьютер «в чистоте» и операционная система протянула год без глюков и без переустановки, это меня очень удивило.

equinox, я рад, что вам понравился скрипт. Как вижу, вы использовали похожий метод, но удаляли все целиком. Поскольку я часто открываю файлы без сохранения, они оседают во временных папках. И я предпочитаю иметь двухнедельную подушку, на случай, если они понадобятся.

Юлиана, CCleaner тоже можно запускать по расписанию с текущим набором настроек. Достаточно закинуть в планировщик команду: ccleaner.exe /auto. Конечно, нужно прописать путь к исполняемому файлу программы.

Юлиана: Много нового узнаю из вашего блога, но проблема в том, что обычный пользователь не будет заниматься настройкой. »

Мне очень приятно, что вы узнаете много нового из моего блога 🙂 Что же касается обычных пользователей, то мой блог не для них. Он для необычных людей, которые стремятся узнать что-то новое о Windows и расширить свой кругозор 🙂

Интересный вариант очистки, я пользовался CMD

На который в групповых политиках запланировано выполнение при выходе из системы. Ваш скрипт заинтересовал расширенными возможностями. Спасибо.

Спасибо. Давно ищу метод очистки дисков от временных файлов на ПК в домене. Этот вопрос пока не гуглил, а можно ли создавать задания в планировщике через GPO? Тогда можно использовать один из этих скриптов или ccleaner с ключом /auto.

IWS, это то же самое, что у equinox, просто код слегка другой.

did5: а можно ли создавать задания в планировщике через GPO? »

А зачем? Поставьте в качестве логон/логофф скрипта и все.

Доброго дня, всем!

после чего скопируйте все содержимое папки в %windir%system32.

, по-моему здесь было бы правильно написать копируем папку CleanUp ,так как в Schdule.cmd указан путь: %WINDIR%system32cleanup
А в целом все такие же интересные и познавательные материалы, как и раньше, так держать!

Антон Плескановский, вы проверили и у вас не работает, или вы теоретизируете?

В schedule.cmd действительно написано

Но там нет слэша в конце, а это значит, что будет выполнен исполняемый файл с именем cleanup вне зависимости от его расширения.

Проверьте сами. Положите в System32 файл cleanup.bat

и выполните в командной строке

Да, все верно — со слэшем не доглядел.
Хотя скрипт чистит в папке Temp пользователя далеко не все файлы 😉
А так в принципе концепт чистки рабочий, это я недоглядел — каюсь.
Удачи Вам и новых интересных публикаций.

Антон Плескановский: Хотя скрипт чистит в папке Temp пользователя далеко не все файлы 😉 »

Возможно, они младше двух недель, ибо этот параметр задан в скрипте.

Спасибо за теплые пожелания! 🙂

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

Читайте также:  Доработка блока питания компьютера

SERG, для очистки временных файлов sdelete не нужна. Это, скорее, для укрепления конфиденциальности, что в домашних условиях не особо востребовано.

Спасибо, взял на вооружение.
Хотелось бы узнать как можно настроить планировщик, что бы задание выполнялось при выключении или выходе из системы пользователя.

Вадим, спасибо!
У меня ноут от НР, и для его обслуживания есть своя прога — HP Support Assistent. Вот она, как я понял и использует вхходящие в Windows 7 утилиты.
А так попробую использовать в ручную ваши советы.

K1RZA, если честно, я не вижу смысла в такой частой очистке временных файлов — при каждом выходе или выключении системы.

Но если очень хочется, настройте запуск задания по событию. Выход из системы — это 4647 в журнале Безопасность. выключение — событие 200 в журнале Diagnostics-Performance (о котором в блоге написано достаточно :).

Андрей, фирменные утилиты — это хорошо, если знаешь, что конкретно они делают 🙂

Спасибо!
взял на вооружение. Но только добавил не в планировщик, а сделал ярлычок в Total CMD, поместив рядом с VBS для создания папки с именем даты и новым текстовиком)

Не подскажете, как можно сделать еще файлик для чистки дисков, скажем, убирать файлы .bak? Порой процедура очень нужная 🙂

Очень рад, что зайдя на OSZONE, я увидел ссылку сюда. Хороший блог, хоть многое и знакомо, но нравится как вы объясняете. Спасибо за труд!

Алексей, спасибо за добрые слова о блоге 🙂

Что касается вашего вопроса про bak-файлы, то:
1. Определите список папок, в которых они создаются
2. Выполняйте для каждой папки команду forefiles.exe с ключом /m *.bak

Практически уже ничего не чищу. Поскольку всё временное находится в стандартных расположениях, раз в полгода захожу во встроенную очистку диска (за это время успевает скопиться 2,5-4GB мусора), удаляю.
Почему не чищу с фанатизмом? Всё предельно просто. HDD распределялся таким образом, чтобы на системном разделе оставался приличный запас свободного места. 4GB мусора никак на скорость работы не влияют.

Morpheus, прямой зависимости между скоростью работы и наличием временных файлов нет. Но есть другие факторы, по которым я не считаю нужным держать на диске по 2-4 Гб мусора на протяжении полугода.

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

Да и вообще, зачем гонять мусор по диску, если его можно удалить 🙂

Vadim Sterkin, справедливо, но это мизер. Наличие мусора при дефрагментации значительно меньше влияет на срок службы, чем сама дефрагментация 🙂

Подскажите, как удалять файлы из директории с исключением?
Пример:
Надо удалить все файлы и папки кроме одной папки.

Станислав, обратитесь к специалистам по скриптам — ссылка на тему форума в конце статьи.

Ну вы блин даётё

ППц.
Это не решение проблемы.
Во первых скрипт это фаил а значит он должен гдето лежать куда пользователь должен иметь доступ.
Во вторых в папку windir emp орбычный юзер даже доступ может не имеет, ибо у него есть свой темп который лежит в %temp%.
В 3 папку %temp% планировщиком не очистить ибо планировщик выполняет задачи от имени, а не для текущего пользователя(вы же понимаете что у каждого юзера папка %temp% своя), тоесть запускать скрипт нуно во время Логона(ЛогОффа).

Вот раборчий вариант.
Просто добавить в групповые политики в пункт User ConfigurationPoliceWindows SettingsScriptsLogOn
Рабаотет для XP и 7(для всех NT5 и NT6)

Ну вы блин даётё: ППц.
Это не решение проблемы. »

Какой проблемы? Скрипт полностью справляется с задачей, отраженной в заголовке и содержании статьи.

Судя по вашему недовольству, вы примеряли его к корпоративной среде. Я пишу для домашних пользователей, если вы этого не заметили. Впрочем, ничто не мешает использовать скрипт в организации, задействовав функционал скриптов входа/выхода из системы. Это — методы выполнения скрипта, но к содержимому скрипта они отношения не имеют.

Ну вы блин даётё: Во первых скрипт это фаил а значит он должен гдето лежать куда пользователь должен иметь доступ. »

То же самое можно сказать и про ваш скрипт 🙂

Ну вы блин даётё: Во вторых в папку windir emp орбычный юзер даже доступ может не имеет, ибо у него есть свой темп который лежит в %temp%. »

В статье не было ничего сказано про %WinDir%Temp, но при запуске из планировщика с максимальными правами все будет работать, если пользователь обладает правами админа.

Ну вы блин даётё: Вот раборчий вариант. »

Я не буду писать о столь примитивных командах как rd и del 🙂 Ну а вы упустили главную соль скрипта — отсечку по дате.

Подскажите, каким образом можно соблюсти требования http://support.microsoft.com/kb/956324

%AllUsersProfile%Application DataMicrosoftDr Watson
%Windir%minidump
%SystemRoot%Memory.dmp
1.Удалить только те %Windir%/$NtUninstallКБ Номер$-папки, созданные более месяца назад, как создать резервную копию файлы обновлений Windows. Не следует удалять те, которые были созданы за последние 30 дней.
2.Чтобы удалить кэш загрузки обновлений Windows, удалите все папки в папке %Windir%SoftwareDistributiondownload, которые были создано более 10 дней назад.
3.Удалите следующие файлы журнала в папке % Windir %:
KB*.log
Setup*.log
Setup*.old
SetupLog.txt
файле Winnt32.log
SET*.tmp
1.Удалите папку %Windir%$NtServicePackUninstall$ на Удалите папки резервного копирования для пакетов обновления для Windows XP.
2.Удалить папку % windir%ServicePackFiles для удаления установочные файлы и папки кэша для службы Windows XP пакеты обновления.
Нашёл вас через oszone
А так же, как удалить всё из папки профиля пользователей, работающих за 1 пк файлы по маске и старше n дней из заданной папки или удалить папку по маске и старше n дней, пример: удалить всё для пользователь1 и пользователь2 из C:Documents and Settingsпользователь1del*.* и C:Documents and Settingsпользователь2del*.* или саму папку del (маска), если она старше n дней, выполять надо в не зависимости от того, какой пользователь работает с пк?

Читайте также:  На айфоне пропала сеть пишет поиск

В конце записи есть ссылка на тему в форуме по скриптам, обратитесь туда, плиз.

Вадим, а можно в этом запросе

сделать так чтобы оставалась 1 (последняя) копия не зависимо от даты. Это мне нужно, на случай сбоя резервного копирования т.к. этой командой я удаляю старые резервные копии.

Андрей, в статье есть ссылка на тему форума — там помогут.

А русский работает?
пробую
cscript //Nologo MyCleanUp.VBS 4 «c:Мои» >MyCleanupScript.Log
не работает, а если переименовать в «moi» — ok. Беда в том что нужно именно эту папку чистить

Андрей, я понятия не имею, как в VBS обрабатываются пути с кириллицей. Спросите в указанной теме форума.

Но ничто не мешает вам использовать forfiles, сохранив скрипт в кодировке OEM.

Это все понятно, а вот можно изменит скриптом адрес который находится по умолчанию в %TEMP% например на D: emp

Я рад, что вам все понятно. Поиск в блоге по запросу «переменные среды» привел бы вас сюда. TEMP/TMP меняются примерно так же, как и пользовательская PATH.

А можно в данный скрипт внести изменении чтобы не удалялись пара каталогов с данными из этой папки?

Точнее, произвожу очистку папки данным скриптом, в папке есть пара папок которые оттуда перенести нельзя,можно ли видоизменить скрипт таким образом,чтобы при срабатывании он их не трогал,заранее спасибо за ответ…

Денис, см. раздел «Благодарности» в конце записи.

Vadim Sterkin,

Спасибо. Не обратил внимания.

Подскажите как автоматизировать очистку папки AppData/Temp в профиле пользователя, чтобы удалялось из папки всё . У меня ничего не получается.

Сергей, а что конкретно вы сделали, что у вас ничего не получается?

Vadim Sterkin,

В общем пытаюсь прописать путь
C:/Users/serega/AppData/Local/Temp/ чтобы удалять из этой папки все файлы вместе с папками старше 1 дня. Но наверное неправильно что-то пишу. Я пишу так:
@echo off
forfiles.exe /p C:/Users/serega/AppData/Local/Temp/s /m *.* /d -14 /c «cmd /c del /q /f @file»

Сергей, слэши в путях неправильные. C:users надо.

Скажите нет ли способа чистить папку tmp на хостинге , после установки плагинов и тп. она засоряется а в ручную долго это делать?

Вячеслав, очевидно, надо запускать какой-то скрипт на сервере, на котором крутится ваш сайт 🙂

Vadim Sterkin: Вячеслав, очевидно, надо запускать какой-то скрипт на сервере, на котором крутится ваш сайт 🙂
»

это понятно , думал вы можете скрипт посоветовать , ну даладно.

Вячеслав, как я могу советовать скрипт, если я даже не знаю ОС, под управлением которой работает сервер? 🙂 Для Windows вы скрипт уже знаете, гуд лак!

Потестировал предложенные скрипты. Файлы удаляет на УРА! Проблема с удалением вложенных папок в папке Temp. То есть в самих папка файлы стираются, а вот сами папки остаются. Как это можно исправить, подскажите пожалуйста.

Вадим, спасибо за оперативность!
rd удаляет вместе с самой указанной папкой TEMP. Нужное удалять только все содержимое этой папки. А внутри папки temp — могут быть другие папки со случайными именами.

Антон, даже если вы не владеете CMD, можно погуглить

Использую скрипт VBS для очистки от временных файлов; но вот что раздражает так это то, что при выполнении файлика CleanUp.cmd с двумя командами запуска скриптов для чистки пользовательского и системного TEMP каталогов на доли секунд появляется и исчезает черное окно интерпретатора команд. Можно каким либо способом сделать чтобы это окно не появлялось ?

Можно запуск скрипта предварять start /min …

Vadim Sterkin,

Использую данную команду для автоматического удаления файлов внутри своей временной папки. Удаляет хорошо, однако после работы основной программы остается не только файл temp но и log. Расширения нет и данный скрипт на нем спотыкается. Как обойти?
Заранее спасибо.

1. Я не телепат, поэтому не знаю, какую «данную» команду вы используете.
2. В конце записи есть ссылка на тему форума.

Вадим, речь идет об команде:

Vadim Sterkin: FOR /D %%p IN («%Temp%*.*») DO rmdir «%%p» /s /q
»

Сергей, речь о том, что запросы на изменение скрипта нужно направлять в форум.

Оптимизация компьютера, Windows 7, Школьные плакаты,Postfix, HP1200,Window 7,Не удается подключить принтер,Windows 7 NTLDR is missing, Openfire кирилица, CIDR, Wildcard mask,

среда, 29 января 2014 г.

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

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

2 комментария:

Здравствуйте. Поискал про forfiles, прошу сильно не пинать, может плохо искал. Но вопрос! Почему никто и нигде не упоминает/ не объясняет, как сделать тоже самое, но добавить в исключения папки, которые удалять не нужно? Как будто это редкое явление — очистить нужную папку полностью, оставив только одну нужную директорию.

Поставьте запрет на удаление необходимой папки, отобрав права на удаления для пользователя от которого запускается скрипт (можно с помощью того же CACLS — добавить в батник строку для запрета удаления), или поставьте — только чтение — вот в принципе хитрый и простой способ.

Ссылка на основную публикацию
Тест для определения цвета волос
Пожалуйста, не копируйте понравившиеся вам статьи незаконно. Мы предлагаем вам разместить активную ссылку на наш сайт в случае, если вы...
Стим показывает что я не в сети
Не редко пользователи Steam встречаются с проблемой, когда подключение к интернету есть, браузеры работают, но клиент Стим не грузит страницы...
Стим саппорт украли аккаунт
Если ваш аккаунт Steam украли или взломали, то до его восстановления вам необходимо выполнить действия, указанные ниже, иначе аккаунт может...
Тест графики видеокарты 3dmark
Наиболее известная программа тестирования производительности, ставшая де-факто стандартом и точкой отсчета в измерениях игровых возможностей видеокарт. Основную популярность программе обеспечило...
Adblock detector