internet-logo41

Скрипты для очистки temp

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

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

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

ВНИМАНИЕ! ВСЕ СКРИПТЫ ВЫ ИСПОЛЬЗУЕТЕ НА СВОЙ СТРАХ И РИСК. Автор за использование скриптов ответственности не несет.

Скрипты

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

CMD

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

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

1
forfiles.exe /p %temp% /s /m *.* /d -14 /c "cmd /c del /q /f @file"

Конечно, в скрипте вы можете использовать несколько команд, каждая из которых будет удалять заданную папку. Справка по использованию утилиты вызывается командой 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).

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

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

 


 

Скрипт опять не мой, к сожалению, а товарища xlam с серого форума. Используется для удаления содержимого временных папок (Temp) пользователя, путем помещения его в logon или logoff скрипты пользовательской политики:

1
2
3
4
5
6
7
8
9
10
11
12
13
'Скрипт очищает папку %Temp% пользователя
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTMP = objFSO.GetSpecialFolder(2)
Set objFolder = objFSO.GetFolder(""&objTMP&"")
Set colSubfolders = objFolder.SubFolders
Set colSubfiles = objFolder.Files
For Each objSubfolder in colSubfolders
objSubfolder.Delete
Next
For Each objSubfile in colSubfiles
objSubfile.Delete
Next

 


 

или

Есть малюсенький батник, который чистит при запуске его временные папки:
%SystemDrive%
cd "%temp%"
del /f /s /q *.*
cd "%userprofile%\Local Settings\Temporary Internet Files"
del /f /s /q *.*

... но он чистит только временные папки того пользователя от которого запущен батник.

 


 

или

PUSHD %TEMP%
2>Nul RD /S/Q "%TEMP%"
POPD

PUSHD %WinDir%\TEMP
2>Nul RD /S/Q "%WinDir%\TEMP"
POPD

 


 

del /f /q C:\Windows\Temp

 


 

нет конечно, но я для этого использую reg файл


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
"TEMP"=hex(2):25,00,73,00,79,00,73,00,74,00,65,00,6d,00,64,00,72,00,69,00,76,\
00,65,00,25,00,5c,00,74,00,65,00,6d,00,70,00,00,00
"TMP"=hex(2):25,00,73,00,79,00,73,00,74,00,65,00,6d,00,64,00,72,00,69,00,76,00,\
65,00,25,00,5c,00,74,00,65,00,6d,00,70,00,00,00
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]
"TEMP"=hex(2):25,00,73,00,79,00,73,00,74,00,65,00,6d,00,64,00,72,00,69,00,76,\
00,65,00,25,00,5c,00,74,00,65,00,6d,00,70,00,00,00
"TMP"=hex(2):25,00,73,00,79,00,73,00,74,00,65,00,6d,00,64,00,72,00,69,00,76,00,\
65,00,25,00,5c,00,74,00,65,00,6d,00,70,00,00,00
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Session Manager\Environment]
"TEMP"=hex(2):25,00,73,00,79,00,73,00,74,00,65,00,6d,00,64,00,72,00,69,00,76,\
00,65,00,25,00,5c,00,74,00,65,00,6d,00,70,00,00,00
"TMP"=hex(2):25,00,73,00,79,00,73,00,74,00,65,00,6d,00,64,00,72,00,69,00,76,00,\
65,00,25,00,5c,00,74,00,65,00,6d,00,70,00,00,00
[HKEY_CURRENT_USER\Environment]
"TEMP"=hex(2):25,00,73,00,79,00,73,00,74,00,65,00,6d,00,64,00,72,00,69,00,76,\
00,65,00,25,00,5c,00,74,00,65,00,6d,00,70,00,00,00
"TMP"=hex(2):25,00,73,00,79,00,73,00,74,00,65,00,6d,00,64,00,72,00,69,00,76,00,\
65,00,25,00,5c,00,74,00,65,00,6d,00,70,00,00,00


в купе с cmd
 
subinacl.exe /file=directoriesonly "%SYSTEMDRIVE%\TEMP" /grant="все"=f /noverbose /display
subinacl.exe /subdirec "%SYSTEMDRIVE%\TEMP\*.*" /grant="все"=f /noverbose /display

 


Или в блокноте надо написать следующие строки: pushd %TEMP% && rd /s /q . > nul 2>&1 pushd С:\TEMP && rd /s /q . > nul 2>&1. Сохранить файл под именем cleartmp.cmd строго с указанным расширением прямо на диске C:.

pushd %TEMP% && rd /s /q . > nul 2>&1 pushd С:\TEMP && rd /s /q . > nul 2>&1 - Читайте подробнее на FB.ru: http://fb.ru/article/40191/papka-temp-ochistka-s-pomoschyu-skripta

 


 

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

Windows XP
Bash
1
2
3
4
5
6
7
:start
DEL /F /S /Q /A "C:\Windows\Temp\*"
DEL /F /S /Q /A "C:\Temp\*"
DEL /F /S /Q /A "%USERPROFILE%\Local Settings\Temp\*"
 
cd %USERPROFILE%\Local Settings\Temp
Windows 7/8
Bash
1
2
3
4
5
6
7
:start
DEL /F /S /Q /A "C:\Windows\Temp\*"
DEL /F /S /Q /A "C:\Temp\*"
DEL /F /S /Q /A "%USERPROFILE%\AppData\Local\Temp\*"
 
cd %USERPROFILE%\AppData\Local\Temp\\AppData\Local\Temp
rmdir /s /q %USERPROFILE%\AppData\Local\Temp
 
Дополнительно:
Запустить процесс
Bash
1
2
3
4
5
6
7
8
9
10
start outlook.exe
exit /b
 
::ИМЕНА НЕКОТОРЫХ ПРОЦЕССОВ
 
::outlook.exe (MS Outlook);
::notepad.exe (Блокнот);
::chrome.exe (браузер Гугл Хром);
::winword.exe (Ворд);
 
Остановить процесс
Bash
1
2
3
4
5
6
7
8
9
taskkill /F /IM "имя процесса"(без кавычек) /T
 
::ИМЕНА НЕКОТОРЫХ ПРОЦЕССОВ
 
::outlook.exe (MS Outlook);
::notepad.exe (Блокнот);
::chrome.exe (браузер Гугл Хром);
::winword.exe (Ворд);