CMD/BAT - [решено] Не сбрасывается errorlevel в условии

Ответить
Аватара пользователя
a.polyakov

CMD/BAT - [решено] Не сбрасывается errorlevel в условии

Сообщение a.polyakov »

Добрый день.

Не могу понять, почему не работает обнуление errorlevel в операторе if.

Такая конструкция, например (часть кода):



Код:

Код: Выделить всё

reg query "%regpath%" /v %prmtr1% 1>NUL 2>NUL
if %ERRORLEVEL% EQU 0 (
	goto error
) else (
	cd . 
	echo %ERRORLEVEL%
	reg query "%regpath%" /v %prmtr2%
	if %ERRORLEVEL% EQU 0 (goto error)
)

Вместо "cd ." можно любые предлагаемые аналоги (ver > nul и подобные)



Все это работает, находясь в основном условии IF, но абсолютно не работает, используемое в else, errorlevel подхватывается от "родителя" и не сбрасывается никаким образом.
Аватара пользователя
Опиум

Re: CMD/BAT - [решено] Не сбрасывается errorlevel в условии

Сообщение Опиум »

Цитата a.polyakov:



абсолютно не работает,
CMD/BAT - [решено] Не сбрасывается errorlevel в условии




заюзай конструкцию || или &&

без использования %errorlevel%





Код:

Код: Выделить всё

reg query "%regpath%" /v %prmtr1% 1>NUL 2>NUL && goto error
cd . 
reg query "%regpath%" /v %prmtr2% && goto error
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] Не сбрасывается errorlevel в условии

Сообщение megaloman »

a.polyakov, Попробуйте
для понимания
так:

Код:

Код: Выделить всё

SetLocal EnableExtensions EnableDelayedExpansion
reg query "%regpath%" /v %prmtr1% 1>NUL 2>NUL
if !ERRORLEVEL! EQU 0 (
	goto error
) else (
	cd . 
	echo !ERRORLEVEL!
	reg query "%regpath%" /v %prmtr2%
	if !ERRORLEVEL! EQU 0 (goto error)
)

Вариант от Опиум предпочтительнее
Аватара пользователя
a.polyakov

Re: CMD/BAT - [решено] Не сбрасывается errorlevel в условии

Сообщение a.polyakov »

Оба варианта понял, в копилку опыта, не знал )
Ответить

Вернуться в «Скриптовые языки администрирования Windows»