Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 4527
Благодарности: 348

Профиль | Сайт | Отправить PM | Цитировать


Petya V4sechkin и all, а вот задача для настоящих "зубров"!
Нужен батник, который при запуске из любого места, например, с внешнего носителя при загрузке системы с компакт-диска, удаляет, независимо от системных разрешений и атрибутов файлов:
1) всё содержимое всех папок Temp и Temporary Internet Files (для всех пользователей) в каталоге Documents and Settings на системном диске;
2) содержимое папки Windows\Temp;
3) содержимое корзины;
4) все точки восстановления за исключением последней.

Мастера с Ru-board помогали однажды мне решить эту задачу. Результат (последняя версия батника) - ниже (комментарии в файле не мои, а автора батника). Последующее применение батника на разных компах показало, что поставленная цель не вполне достигнута. Так что у тех, кто пожелает мне помочь, есть два пути, по вкусу: или работа над чужими ошибками, или свой вариант...
Код: Выделить весь код
@echo off 
setlocal 

set "ds=Documents and Settings" 
set "tf=Local Settings\Temp" 
set "ti=Local Settings\Temporary Internet Files" 

echo Start.... 

for %%i in (Q W E R T Y U I P O S D F G H J K L Z X C V N M) do ( 
if not %~d0==%%i: call:clean %%i 
) 

echo ....Done 
goto:eof 

:clean 

if exist %1:\Windows\Temp ( 
    pushd %1:\Windows\Temp 
    call:delete 
    popd 
) 

if exist %1:\WinNT\Temp ( 
    pushd %1:\WinNT\Temp 
    call:delete 
    popd 
) 

:: 
:: Корзина. Встречал и Recycler и Recycled 
:: 
if exist %1:\Recycler ( 
    pushd %1:\Recycler 
    call:delete 
    popd 
) 

if exist %1:\Recycled ( 
    pushd %1:\Recycled 
    call:delete 
    popd 
) 

:: Точки восстановления 
:: Удаляет все подпапки вида RP001. У меня рабоает, 
:: но я конечно не проверял на удаление 
if exist "%1:\System Volume Information\*_restore*" ( 
    pushd "%1:\System Volume Information\*_restore*" 
    for /f %%i in ('dir /b /ad') do rd /s /q %%i 
    popd 
) 

if not exist "%1:\%ds%" goto:eof 
for /f "tokens=*" %%i in ('dir /b /ad "%1:\%ds%"') do ( 
     if exist "%1:\%ds%\%%i\%tf%" (     
        pushd "%1:\%ds%\%%i\%tf%" 
        call:delete 
        popd 
    ) 
     if exist "%1:\%ds%\%%i\%ti%" (     
        pushd "%1:\%ds%\%%i\%ti%" 
        call:delete 
        popd 
    ) 
) 
goto:eof 

:delete 
del /q /a /f *.* 1>nul 2>&1 
for /f "tokens=*" %%i in ('dir /b /ad') do rd /s /q "%%i" 1>nul 2>&1

Последний раз редактировалось truvo, 21-10-2008 в 16:28.


Отправлено: 18:13, 19-04-2008 | #117