Комментарии 3
А еще чтобы не городить:
if%ERRORLEVEL% EQU 1 Goto metka1
if%ERRORLEVEL% EQU 2 Goto metka2.......
Проще сделать в одну строку:
Goto metka%ERRORLEVEL%
`set A=B & call echo =%%A%%=` в скрипте и `set A=B & call echo =^%A^%=` в консоли выдаст `=B =`.
Вы забыли кавычки: `set "A=B"`
Писать функции для ресета ошибки тоже не обязательно: `call;` - сбрасывает в 0, `(call)` - устанавливает в 1, `break` - noop для склеивания циклов
goto :EOFне работает в коммандной строкеcmd.exe, т.к. не работает самgoto:call; & cmd.exe /c gotoвозвращает 1 и не печатает ошибки.exitбез параметров возвращает текущий код возврата, поэтому писатьexit /b %ERRORLEVEL%- не обязательно.cmd.execбрасывает код возврата после запуска, а также ещё в некоторых случаях. Поэтому писать в концеexit- не помешает. Примеры:(call) & cmd.exe /c,(call) & cmd.exe /s /c "(call) & break". Пример воркэраунда:(call) & cmd.exe /s /c "(call) & break & exit"
exit /b, errorlevel и catch-like конструкции в cmd