相关疑难解决方法(0)

(Windows批处理)转到if块表现得非常奇怪

如果我使用以下Windows批处理代码段并运行它:

echo foo
if 1 == 1 (
    echo bar
    goto asdf
    :asdf
    echo baz
) else (
    echo quux
)
Run Code Online (Sandbox Code Playgroud)

我期望的输出是:

foo
bar
baz
Run Code Online (Sandbox Code Playgroud)

但相反,我得到:

foo
bar
baz
quux
Run 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)

但是,这不符合我原来的问题.

goto batch-file

18
推荐指数
2
解决办法
1万
查看次数

(此时出乎意料 - 批处理脚本

我正在使用下面的批处理脚本并收到错误

(此时出乎意料.

我知道问题出在第一行,但我不明白出了什么问题.有任何想法吗 ?

脚本:

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)

scripting batch-file

11
推荐指数
1
解决办法
3万
查看次数

标签 统计

batch-file ×2

goto ×1

scripting ×1