这是剧本:
@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
很少帮忙?
答案 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
/ N
和y
/ n
。< / p>
答案 1 :(得分:0)
这让我发疯了。在我的情况下,它在我的()
语句中以::
开头的注释行中未转义IF
。
显然,应该在IF
语句内使用REM而不是::
,但是要转义我所有^(
m ^)
(即使在非注释行中,即{{ 1}}语句)为我工作。