【问题标题】:ELSE was unexpected at this time batch fileELSE 在这个时候出乎意料的批处理文件
【发布时间】:2015-08-28 13:30:33
【问题描述】:

这是脚本:

@echo off

set BSL_Scripter_go="BSL_Scripter.exe"
set BSL_Script=WriteMain_s.txt
set yes=Y
set no=N


::%BSL_Scripter_go% %BSL_Script%

:LABEL1
set /p answer=Have you turned device off?[Y\N]

IF "%answer%"=="%yes%" (GOTO LABEL_DEVICE_RUN
) ELSE (IF "%answer%"=="%no%"(GOTO LABEL1) ELSE (GOTO LABEL_TYPO))

:LABEL_DEVICE_RUN
echo Device is runing..
GOTO END

:LABEL_TYPO
echo UNCORRECT ANSWER, PLEASE TYPE 'Y' or 'N'
GOTO LABEL1

:END

我得到了错误:

ELSE was unexpected at this time

帮助不大?

【问题讨论】:

    标签: batch-file if-statement


    【解决方案1】:

    "%no%" 和 (GOTO LABEL1) 之间缺少 SPACE:

    IF "%answer%"=="%no%" (GOTO LABEL1)
    

    否则,"%no%"(GOTO 是要比较的字符串,所以结尾的 ) 太多了。命令行解释器尝试执行以下行(省略值和命令以进行可视化):

    IF <value>==<value> (command) ELSE (IF value==value command) ELSE (command))
    

    您会注意到第一个 IF 语句似乎有两个 ELSE 子句。

    旁注:我建议使用/IF /I "%answer%"==...,以便接受Y/N 和y/n。

    【讨论】:

      【解决方案2】:

      这让我发疯了。在我的情况下,在我的 IF 语句中以 :: 为前缀的评论行中是未转义的()。

      显然应该在IF 语句中使用 REM 而不是::,但是转义我所有的^(m ^)(即使在非注释行中,即ECHO 语句)对我有用。

      见:https://stackoverflow.com/a/16839602/913223

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-29
        • 1970-01-01
        • 1970-01-01
        • 2011-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多