Обновить

Комментарии 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 для склеивания циклов

  1. goto :EOF не работает в коммандной строке cmd.exe, т.к. не работает сам goto: call; & cmd.exe /c goto возвращает 1 и не печатает ошибки.

  2. exit без параметров возвращает текущий код возврата, поэтому писать exit /b %ERRORLEVEL% - не обязательно.

  3. cmd.exe cбрасывает код возврата после запуска, а также ещё в некоторых случаях. Поэтому писать в конце exit - не помешает. Примеры: (call) & cmd.exe /c, (call) & cmd.exe /s /c "(call) & break". Пример воркэраунда: (call) & cmd.exe /s /c "(call) & break & exit"

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Информация

Сайт
otus.ru
Дата регистрации
Дата основания
Численность
101–200 человек
Местоположение
Россия
Представитель
OTUS