【问题标题】:Windows batch file: GOTO, DELAYEDEXPANSION issue [duplicate]Windows 批处理文件:GOTO、DELAYEDEXPANSION 问题 [重复]
【发布时间】:2021-10-27 04:49:58
【问题描述】:

在下面查看我的批次!

预期输出:成功

当前输出:成功

            Error

任何想法,为什么会出现问题?没有 GOTO 可以按预期工作。

@ECHO OFF

SETLOCAL ENABLEDELAYEDEXPANSION



SET doIt=1

SET callMeAgain=1

if !doIt! == 1 (

    :loop
    if !callMeAgain! == 1 (
        SET callMeAgain=0
        GOTO :loop
    )

    ECHO Success

) ELSE (

    ECHO Error
)


ECHO.

ENDLOCAL

PAUSE

【问题讨论】:

标签: windows batch-file goto


【解决方案1】:

GOTO 会破坏任何括号块。

一个最小的例子

if 1==1 (
   echo success
   goto :dummy
   :dummy
) ELSE (
   echo ERROR
)

在跳转到:dummy 之后,批处理解析器会查看:

) ELSE (
   echo ERROR
)

此时IF 部分被忽略。
) ELSE ( 部分被简单地忽略了,因为单个开头的 ) 就像这里的行注释一样。

【讨论】:

    猜你喜欢
    • 2011-03-16
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 2011-07-01
    • 1970-01-01
    相关资源
    最近更新 更多