如果我使用以下Windows批处理代码段并运行它:
echo foo
if 1 == 1 (
echo bar
goto asdf
:asdf
echo baz
) else (
echo quux
)Run Code Online (Sandbox Code Playgroud)
我期望的输出是:
foo
bar
bazRun Code Online (Sandbox Code Playgroud)
但相反,我得到:
foo
bar
baz
quuxRun Code Online (Sandbox Code Playgroud)
如果我注释掉该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
)Run Code Online (Sandbox Code Playgroud)
但是,这不符合我原来的问题.
我正在使用下面的批处理脚本并收到错误
(此时出乎意料.
我知道问题出在第一行,但我不明白出了什么问题.有任何想法吗 ?
脚本:
IF [%1]==[] (
:LOOP1
SET /P isDefault=Value Missing, do you want to use default values [1,1,10,Local Area Connection 2]?[y/n]
IF %isDefault%==y (
SET from=1
SET step=1
SET to=10
SET lan="Local Area Connection 2"
GOTO :USERLOOP
)
IF %isDefault%==n GOTO :END
GOTO :LOOP1
)
Run Code Online (Sandbox Code Playgroud)