Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Не сбрасывается errorlevel в условии (http://forum.oszone.net/showthread.php?t=353553)

a.polyakov 11-05-2023 19:44 3008869

Не сбрасывается errorlevel в условии
 
Добрый день.
Не могу понять, почему не работает обнуление 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 3008913

Цитата:

Цитата a.polyakov
абсолютно не работает, »

заюзай конструкцию || или &&
без использования %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 3008914

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 13-05-2023 11:09 3008944

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


Время: 13:26.

Время: 13:26.
© OSzone.net 2001-