Скрипты для очистки temp
Как вы удаляете временные файлы? Вручную запускаете 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" |
- Вместо %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).
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 файл
"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:.
Чистка КЭШа (временных файлов) в системе, включая вложенные каталоги.
Обычно я закидываю эти батники в автозагрузку, чтобы оптимизировать работу системы.
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 |
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 |
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 (Ворд); |
1 2 3 4 5 6 7 8 9 |
taskkill /F /IM "имя процесса"(без кавычек) /T ::ИМЕНА НЕКОТОРЫХ ПРОЦЕССОВ ::outlook.exe (MS Outlook); ::notepad.exe (Блокнот); ::chrome.exe (браузер Гугл Хром); ::winword.exe (Ворд); |