Если я возьму следующий фрагмент кода пакета Windows и запустил его:
echo foo
if 1 == 1 (
echo bar
goto asdf
:asdf
echo baz
) else (
echo quux
)
Ожидаемый результат:
foo
bar
baz
Но вместо этого я получаю:
foo
bar
baz
quux
Если я прокомментирую строку goto asdf
, она даст ожидаемый результат. Строка echo quux
никогда не должна быть экспроприирована, поэтому почему существование goto вызывает это?
ОБНОВЛЕНИЕ: Для чего это стоит, обходной путь, который правильно выполняет то, что я изначально планировал:
goto BEGIN
:doit
echo bar
goto asdf
:asdf
echo baz
goto :EOF
:BEGIN
echo foo
if 1 == 1 (
call :doit
) else (
echo quux
)
Однако это не отвечает на мой первоначальный вопрос.