Войти

Показать полную графическую версию : [решено] Не сбрасывается errorlevel в условии


a.polyakov
11-05-2023, 19:44
Добрый день.
Не могу понять, почему не работает обнуление 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 подхватывается от "родителя" и не сбрасывается никаким образом.

Опиум
12-05-2023, 13:09
абсолютно не работает, »

заюзай конструкцию || или &&
без использования %errorlevel%


reg query "%regpath%" /v %prmtr1% 1>NUL 2>NUL && goto error
cd .
reg query "%regpath%" /v %prmtr2% && goto error

megaloman
12-05-2023, 14:06
a.polyakov, Попробуйте для понимания (https://www.safezone.cc/threads/cmd-setlocal-i-rasshirennaja-obrabotka-komand.22629/) так: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
13-05-2023, 11:09
Оба варианта понял, в копилку опыта, не знал )




© OSzone.net 2001-2012