Я не могу понять коды ошибок выбора партии - PullRequest
0 голосов
/ 28 ноября 2018

Если у меня есть такой код:

@echo off
choice /C BL /M "Clear screen or list actual directory"

if errorlevel 2 goto l
if errorlevel 1 goto b

:l
tree /f
goto final

:b
cls
goto final

:final

Я знаю, что это на самом деле работает, но меня смущает одна вещь, связанная с частями уровня ошибки.Сначала я написал тот же код, но вот так:

if errorlevel 1 goto l
if errorlevel 2 goto b

И таким образом он не будет работать должным образом. Он будет помнить только код ошибки 1. При нажатии второй вариант не работает.
Мне действительно интересно, почему порядок ошибок имеет значение, если партия должна выполняться построчно, или я ошибаюсь?
В двух словах, я хочу понять, как здесь работают коды ошибок

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Подсказка: при использовании переменной %errorlevel%, прикрепленной к метке goto, все может быть довольно просто:

@echo off
choice /C BL /M "Clear screen or list actual directory"
goto :choice%errorlevel%

:choice1 B
tree /f
goto final

:choice2 L
cls
goto final

:final
pause
0 голосов
/ 28 ноября 2018
C:\>if /?
...
IF [NOT] ERRORLEVEL number command
...
ERRORLEVEL number   Specifies a true condition if the last program run returned
                    an exit code <em>equal to or greater than</em> the number specified.

Другими словами, if errorlevel 1 выполняется для любого уровня ошибки (кроме 0 = нет ошибок), поскольку все они равны или больше 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...