Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Поиск и очистка временных файлов по средством BAT (http://forum.oszone.net/showthread.php?t=211472)

snow1eopard 19-07-2011 19:04 1715827

Поиск и очистка временных файлов по средством BAT
 
имеется файл в автозагрузке, написанный мною для очистки временных файлов, но хотелось бы чистить и все остальное, тот мусор которого в избытке напихано в винде, мог бы кто нибудь помочь по данному вопросу?
Т.е. ищем файлы с определенным расширением по всему диску и удаляем их, можно и забивая перед этим 0 1 0 1 соответсвенно размеру для пущей безопасности, ну это я шучу такое наверное невероятно сложно и долго))))
Сможет кто нибудь помочь?
Вот мой файл, просто чистит каталоги с временными файлами, может кому пригодится, 100% рабочий проверен везде где только можно:
Цитата:

@echo off
set temp1=%homedrive%\WINDOWS\Temp
rd /s /q %homedrive%\WINDOWS\Temp
md %temp1%

set temp2=%temp%
rd /s /q %temp%
md %temp2%

rd /s /q "%homepath%\Local Settings\Temp"
rd /s /q "%homedrive%%homepath%\Local Settings\Temporary Internet Files"
Маски временных файлы предназначенных для поиска и удаления:
*.---; *.#res; *.$db;

root221 19-07-2011 22:00 1715926

snow1eopard,

Удаляет все файлы с расширением *.---; *.#res; *.$db; в нашем случае в папке и в подкаталогах Temp.
+логирование

Код:

@echo off
:: Уберёш РЕМ если в пути к файлам имеются русские пути.
rem chcp 1251
::Логи
Set logpath=C:\Log.txt
::Где будем искать ? и удалять
Set Disk=C:\Temp
::Какие расширения?
set Rash=*.---; *.#res; *.$db;
For /R %Disk% %%i In (%Rash%) Do (
Del "%%i"
If Not Exist "%%i" (Echo %time:~0,-3% ^> Файл "%%i" успешно удален.>> "%logpath%")Else (Echo %Time:~0,-3% ^> Файл "%%i" не был удален.>> "%logpath%")
)


root221 19-07-2011 22:55 1715947

snow1eopard,

И к чему всё так накручено?

Код:

set temp2=%temp%
 rd /s /q %temp%
 md %temp2%

Когда это можно сделать так

Код:

rd /s /q %temp%
 md %temp%


тоже самое

Код:

set temp1=%homedrive%\WINDOWS\Temp
 rd /s /q %homedrive%\WINDOWS\Temp
 md %temp1%

На

Код:


set temp1=%homedrive%\WINDOWS\Temp
 rd /s /q %temp1%
 md %temp1%


Vadikan 19-07-2011 23:05 1715949

Явно не первая тема... http://forum.oszone.net/forumdisplay...ilter_by=title

snow1eopard 20-07-2011 00:28 1715994

root221 наверное так потому что по правильному не работает)

все работает, офигеть, большущее спасибо!

snow1eopard 20-07-2011 01:20 1716010

Вот то что получилось, очищает от всего мусора что есть, закинув в автозагрузку ярлык с параметром свернуто имеем всегда чистую систему, аллилуйя :)
Проверил на своей системе Win7, все работает как надо. На XP не проверял.
Цитата:

@echo off
set temp1=%homedrive%\WINDOWS\Temp
rd /s /q %homedrive%\WINDOWS\Temp
md %temp1%

set temp2=%temp%
rd /s /q %temp%
md %temp2%

rd /s /q "%homepath%\Local Settings\Temp"
rd /s /q "%homedrive%%homepath%\Local Settings\Temporary Internet Files"

chcp 1251

::Логи
Set logpath=C:\Log.txt
::Где будем искать ? и удалять
Set Disk=C:\
::Какие расширения?
set Rash=*.---; *.#res; *.$db; *.*$; *.*~; *.?$?; *.?~?; *.@@@; *._detmp; *._mp; *.~*; *.00*; *.1st; *.bac; *.back*; *.bak; *.bup; *.chk; *.cpy; *.dir; *.dmp; *.err; *.fic; *.fnd; *.ftg; *.fts; *.gid; *.MS; *.nav; *.old; *.prv; *.sdi; *.shd; *.sik; *.syd; *.temp; *.tmp; *.wbk; *.xlk; *__ofidx*.*; *~tmp.*; _istmp*.*; ~*.*; 0*.nch; bootlog.*; brndlo?.txt; chklist.*; ffastun.*; iebak.da?; modemde?.txt; mscreat?.dir; ntbtlo?.txt; pspbrws?.jbf; scandis?.log; setuplo?.txt; suhdlog.*; t3v?????.*; thumb?.db; twain???.mtx; *.___;
REM *log.txt;
For /R %Disk% %%i In (%Rash%) Do (
Del "%%i"
If Not Exist "%%i" (Echo %time:~0,-3% ^> Файл "%%i" успешно удален.>> "%logpath%")Else (Echo %Time:~0,-3% ^> Файл "%%i" не был удален.>> "%logpath%")
)

Iska 20-07-2011 05:19 1716068

Цитата:

Цитата snow1eopard
Код:

set temp1=%homedrive%\WINDOWS\Temp
rd /s /q %homedrive%\WINDOWS\Temp
md %temp1%

»

Уже обсуждалось, что при «RD + MD» теряются оригинальные атрибуты безопасности удаляемого каталога, и стоит делать иначе: «PUSHD + RD + POPD» — пробежитесь по фильтру из #4.

Busla 20-07-2011 10:29 1716189

Всё хорошо до поры до времени:
скрипт выполнится на уже загрузившейся системе - в %TEMP% могут оказаться файлы, созданные в текущем сеансе, а не старый мусор
инсталляторы, требующие перезагрузки, тоже круто обломаются с такой автоматизацией

snow1eopard 20-07-2011 11:16 1716216

Все таки обнаружилась проблемка, по расширению воспринимаются не только файлы с таким расширением, но и файлы с более длинным именем и двойным расширением, как можно такое вылечить?

Пример:
Цитата:

microsoft.bak удаляется
microsoft.bakground.exe удаляется тоже
Как сделать что бы жестко по маске удаляло, а не лупило все с бОльшим расширением и что бы не трогало файлы с двойным расширением, если таковых в маске нет.

ferget 20-07-2011 11:46 1716230

что-то вроде этого
Код:

del/s/q *.txt *.vbs >>1.log

Iska 20-07-2011 12:45 1716286

snow1eopard, никаких «двойных» расширений не существует. Т.о.: «microsoft.bakground» — имя, «exe» — расширение.

Приведите используемую Вами маску и список тех файлов, которые она излишне, по Вашему мнению, удаляет.

root221 20-07-2011 19:08 1716581

snow1eopard, только что создал в папке файлы

Код:

microsoft.bak
microsoft.bakground.exe

Код:

microsoft.bak - Удалился
microsoft.bakground.exe - Не удалился

Возможно у вас накручено, я вам уже писал »

тестируйте отдельно моим скриптом, потом добавьте своё творение и попробуйте.


отчёт:

Код:

19:02:45 > Файл "D:\bin\1\microsoft.bak" успешно удален.
а всё понятно решил добавить звёздочку здесь

Код:

*.bak*;

теперь

Код:

microsoft.bak - Удалился
microsoft.bakground.exe - Удалился


snow1eopard 21-07-2011 12:36 1717061

Я свое творение и не добавлял когда тесил.

Microsoft.BackgroundIntelligentTransfer.Management.Interop.dll

ясно, причина была в * после back

*.back*

спасибо, теперь все работает как должно.

death7lord 21-09-2013 15:12 2221431

батники не изучал, но после поисков по инету собрал вот это:
Код:

@echo off
:: Убрать rem, если в пути к файлам имеются русские символы
rem chcp 1251
:: Где ищем
set disk=W
:: attrib убирает атрибуты "скрытый" и "системный" на удаляемых файлах во всех подкаталогах
:: del удаляет файлы по маске во всех подкаталогах
:: Ключ /F позволяет удалять файлы с атрибутом "только чтение"
attrib -H -S /S %disk%:\*.db
del /F /S /Q %disk%:\*.db

единственный минус - каждую маску приходится прописывать дважды....

Iska 21-09-2013 19:07 2221518

Цитата:

Цитата death7lord
Код:

:: Убрать rem, если в пути к файлам имеются русские символы
rem chcp 1251

»

Не надо. Причем дважды «не надо». Во-первых, надо — сохранять пакетный файл в кодировке OEM/866. Во-вторых — у Вас нигде не используются пути в приведённом коде.


Цитата:

Цитата death7lord
единственный минус - каждую маску приходится прописывать дважды.... »

Код:


set sMask=%disk%:\*.db

attrib.exe -H -S /S "%sMask%"
del /F /S /Q "%sMask%"


death7lord 22-09-2013 03:18 2221729

Цитата:

Цитата Iska
у Вас нигде не используются пути в приведённом коде»

Цитата:

Цитата death7lord
set disk=W »

Уточни, зачем там ЕХЕ ?
Цитата:

Цитата Iska
attrib.exe »


Iska 22-09-2013 03:42 2221731

Это никак не пути, поскольку ниже есть явное указание именно на имя диска:
Цитата:

Цитата death7lord
attrib -H -S /S %disk%:\*.db
del /F /S /Q %disk%:\*.db »

Пути в «set disk=W» без правки нижеследующего кода использовать не представляется возможным.

Цитата:

Цитата death7lord
Уточни, зачем там ЕХЕ ? »

Для ясности. Иначе этим «attrib» может оказаться любой из .exe/.com/.bat/.cmd в текущем каталоге или в PATH.


Время: 16:43.

Время: 16:43.
© OSzone.net 2001-