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

Mila

Основатель
Сообщения
4,945
Реакции
8,549
Баллы
953
Как вы удаляете временные файлы? Вручную запускаете CCleaner или аналогичную программу, либо настроили ее запуск по расписанию? Я обхожусь встроенными средствами Windows, причем все сводится буквально к одной команде. Я хочу поделиться с вами двумя скриптами, которые давно служат мне верой и правдой для удаления ненужных файлов.

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

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

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

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


CMD

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


Нажмите меню "Пуск"=>Введите cmd => По найденному объекту кликните правой кнопкой мыши и выберите пункт Запустить с правами администратора"
Введите команду и нажмите enter:

Код:
forfiles.exe /p %temp% /s /m *.* /d -14 /c "cmd /c del /q /f @file"
-Вместо %temp% (временной папки в профиле) подставьте свою папку (параметр /p)
-Возраст файлов по умолчанию 14 дней (параметр /d), но вы можете задать любое значение
-Можно удалять файлы определенного расширения по маске (например, /m *.log)
За рекурсивное удаление (во вложенных папках) отвечает параметр /s

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

VBS

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


Код:
On Error Resume Next
intDays = Int(Wscript.arguments.Item(0))
strFldr = Wscript.arguments.Item(1)
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
DelOld strFldr, intDays
 
Function DelOld(sFldr, iDays)
On Error Resume Next
   Dim oD, cF, cD, oI
 
   Set oD = objFSO.GetFolder(sFldr)
   Set cF = oD.Files
   Set cD = oD.SubFolders
 
   For Each oI In cF
      If DateDiff("d", oI.DateLastModified, Now) > iDays Then
         WScript.Echo oI.Path
         oI.Attributes = 0
         oI.Delete
      End If
   Next
 
   For Each oI In cD
      DelOld oI.Path, iDays
      If oI.Size = 0 Then
         oI.Attributes = 0
         oI.Delete
      End If
   Next
End Function
-Файлы удаляются по дате изменения. Чтобы удалять по дате создания, замените .DateLastModified на .DateCreated
-Если не хотите удалять защищенные файлы, закомментируйте строку
Код:
‘ oI.Attributes = 0
Команда для выполнения

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

Код:
cscript //Nologo MyCleanUp.VBS 14 %windir%\temp >MyCleanupScript.Log
Вместо %windir%\temp подставьте свою папку (в этом примере удаляются файлы из временной папки в системном каталоге)
Возраст файлов по умолчанию 14 дней, но вы можете задать любое значение
Список удаленных файлов будет по умолчанию сохранен в файле %windir%\system32\MyCleanupScript.Log, хотя можно указать любой путь и имя файла

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


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

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

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

Код:
Schtasks.exe /Create /RL Highest /TN CleanUP /SC Weekly  /D SUN /ST 14:00 /TR "%WINDIR%\system32\cleanup.cmd"
Задание с именем CleanUp будет выполняться:

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

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



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


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

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

2.Щелкните правой кнопкой мыши на файле schedule.cmd и выберите Запуск от имени администратора, чтобы создать задание.



Автор: Вадим Стеркин



источник
 
Последнее редактирование модератором:
Сверху Снизу