如何使用批处理同时执行2个命令

时间:2016-07-06 02:53:54

标签: batch-file cmd

我在这里看到了与我类似的另一个问题。答案是使用&符号在一行中运行两个命令。但这是针对两个不同的命令,我尝试的两个命令是gotoecho

当我尝试在&之后添加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(发送回问题,以便他们可以重新回答。)但当然因为指定的原因会不适合我。

1 个答案:

答案 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已定义,因此echogoto被忽略。最好省略最后一个if completeley,并用以下内容替换该行:

echo Not an acceptable answer & goto READYTOBEGIN?

如果未定义answer或未使用之前的if

进行捕获,则会触发