我在这里看到了与我类似的另一个问题。答案是使用&
符号在一行中运行两个命令。但这是针对两个不同的命令,我尝试的两个命令是goto
和echo
。
当我尝试在&
之后添加echo
符号时,它认为我想要echo
&
符号。然后我尝试在&
之后放置goto EXAMPLETEXT
符号,它认为我想要转到我的批处理文件EXAMPLETEXT &
中的某个位置。命令不知道何时偏离命令到下一个命令。
如果你想知道我使用这个的上下文或为什么我需要使用它,原因是我问了一个问题,set /p answer=Are you ready to begin?:
然后我有if %answer% == Ready goto begin
和{ {1}}和if %answer == Not ready goto NOTREADY
等等。
然后在所有指定的答案选择结束时,我想把if %answer% == yes goto begin
(发送回问题,以便他们可以重新回答。)但当然因为指定的原因会不适合我。
答案 0 :(得分:0)
使用if exist
使用变量NAME,而不是变量本身(不是%
)
你的行
if not defined %answer% echo Not an acceptable answer & goto READYTOBEGIN?
解析(因为%answer%
为空)为:
if not defined echo Not an acceptable answer & goto READYTOBEGIN?
echo
也未定义(可能),因此要执行的命令为Not
- 这会导致错误“未找到命令”。
如果 定义,则没有错误,但这并不是更好。我们假设,用户输入hello
,然后该行被解析为:
if not defined hello echo Not an acceptable answer & goto READYTOBEGIN?
可能没有定义变量hello
,但它可能是 - 所以你有一个不可预测的行为。
您的行的正确语法是:
if not defined answer echo Not an acceptable answer & goto READYTOBEGIN?
当用户输入qwertzui
时,你做了什么? answer
已定义,因此echo
和goto
被忽略。最好省略最后一个if
completeley,并用以下内容替换该行:
echo Not an acceptable answer & goto READYTOBEGIN?
如果未定义answer
或未使用之前的if