Имя пользователя:
Пароль:
 

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

Ветеран


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

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


Из письма в ПМ:
Цитата 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».
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:51, 04-04-2011 | #21