此时ELSE意外的批处理文件

时间:2015-08-28 13:30:34

标签: batch-file if-statement

这是剧本:

@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

很少帮忙?

2 个答案:

答案 0 :(得分:2)

"%no%"(GOTO LABEL1)之间缺少空格

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

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

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

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

附注:我建议您使用/IF /I "%answer%"==...,以便接受Y / Ny / n。< / p>

答案 1 :(得分:0)

这让我发疯了。在我的情况下,它在我的()语句中以::开头的注释行中未转义IF

显然,应该在IF语句内使用REM而不是::,但是要转义我所有^( m ^)(即使在非注释行中,即{{ 1}}语句)为我工作。

请参阅:https://stackoverflow.com/a/16839602/913223