Из письма в ПМ:
Цитата sov44:
…не хочется постить большой скрипт в теме. Проблема в том, что в скрипте два цикла по удалению файлов. По отдельности они отрабатывают на ура, а если они в одном теле, второй цикл удаления файлов, уходит в бесконечность. Экспериментировал по разному, но безрезультатно.
|
Выкладывайте вопросы на форум.
Во-первых, у Вас в приложенном к письму пакетном файле две одинаковых метки «:CalcAndDel». Во-вторых, есть лишние «endlocal», которые могут вести к некорректным подсчётам (не проверялось). В-третьих, пакетный файл зацикливается оттого, что Вы сами так слепили его:
читать дальше »
Код:

…
:m1
rem Очистка введённых адресов в Mazilla
if not exist "%programfiles%\Mozilla Firefox" echo Очистка введённых адресов в Mazilla - -- ^ & goto m2
for /f "usebackq tokens=2 delims==" %%i in (`type "%APPDATA%\Mozilla\Firefox\profiles.ini"^|find.exe "Path="`) do ^
set MF_his=%AppData%\Mozilla\Firefox\%%i
set /a iSum = 0
call :CalcAndDel "%MF_his%\places.sqlite"
call :CalcAndDel "%MF_his%\places.sqlite-wal"
call :CalcAndDel "%MF_his%\places.sqlite-shm"
Set /A Cnt +=%iSum%
echo Очистка введённых адресов в Mazilla - OK
goto m1
endlocal
exit /b 0
— ничего удивительного.
Можно попробовать так:
читать дальше »
Код:

@echo off
setlocal enableextensions enabledelayedexpansion
set /a iTotalSize = 0
rem Очистка введённых адресов в Opera
if exist "%ProgramFiles%\Opera" (
echo Очистка истории в Opera
call :CalcAndDel "%AppData%\Opera\Opera\typed_history.xml"
call :CalcAndDel "%AppData%\Opera\Opera\global_history.dat"
call :CalcAndDel "%AppData%\Opera\Opera\search_field_history.dat"
)
echo.
rem Очистка введённых адресов в Mozilla Firefox
if exist "%ProgramFiles%\Mozilla Firefox" (
echo Очистка введённых адресов в Mozilla Firefox
for /f "usebackq tokens=2 delims==" %%i in (
`type "%AppData%\Mozilla\Firefox\profiles.ini"^|find.exe /i "Path="`
) do set sProfile=%AppData%\Mozilla\Firefox\%%i
if defined sProfile (
call :CalcAndDel "!sProfile!\places.sqlite"
call :CalcAndDel "!sProfile!\places.sqlite-wal"
call :CalcAndDel "!sProfile!\places.sqlite-shm"
)
)
echo %iTotalSize%
set /a kb = 1024
set /a mb = kb * kb, dirsizeMB = iTotalSize / mb, ostMB = iTotalSize %% mb * 100 / mb
echo.
echo Очистка выполнена, всего удалено %dirsizeMB%,%ostMB% Мб
endlocal
exit /b 0
rem ==========================================================================
rem ==========================================================================
:CalcAndDel
set sFile=%~1
if defined sFile (
if exist "%sFile%" (
set /a iTotalSize += %~z1
echo del /f /q "%sFile%"
) else (
echo Not found file [%sFile%]
)
) else (
echo Error call procedure: need argument ^<file^>
)
exit /b 0
rem ==========================================================================
Как обычно, в примере удаление переделано в «echo».