如果我使用以下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行不应该exectuted,所以为什么goto语句的存在导致这样的事情发生?
更新:对于它的价值,这里有一个替代方法可以正确地实现我最初的意图:
goto BEGIN
:doit
echo bar
goto asdf
:asdf
echo baz
goto :EOF
:BEGIN
echo foo
if 1 == 1 (
call :doit
) else (
echo quux
)
但是,这不能回答我的原始问题。
慕的地8271018