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

Mila

Основатель
Сообщения
4,947
Симпатии
10,469
Баллы
953
#1
Как вы удаляете временные файлы? Вручную запускаете 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

proxy.php?image=http%3A%2F%2Foszone.net%2Fuser_img%2Fvadblog%2Fcleanup01_mini_oszone.jpg&hash=32f793a3b91b12fd95035d0a9d0bfc59


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


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

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

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



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



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