2016-07-06 55 views
-4

我在这里看到了另一个类似于我的问题。答案是使用&符号在一行中运行这两个命令。但是,这是两个不同的命令,我试图使用的两个命令是gotoecho如何使用批量同时执行2个命令

当我尝试把&签到后我想要echo,它认为我想要echo&签。所以然后我试着在goto EXAMPLETEXT之后加上&这个符号,它相信我想去我批处理文件中的一个地方,叫做EXAMPLETEXT &。命令不知道什么时候从他们的命令偏离到下一个命令。

如果你想知道我用这什么情况下为什么我需要使用这个,原因是是,我问一个问题,set /p answer=Are you ready to begin?:然后我有,if %answer% == Ready goto beginif %answer == Not ready goto NOTREADYif %answer% == yes goto begin等。

然后在所有指定的答案选项可接受的末尾,我想把if not defined %answer% echo Not an acceptable answer & goto READYTOBEGIN?(发送回问题,以便他们可以重新回答。)但当然,由于指定的原因,将不会工作我。

+1

为什么它绝对有在一条线上?如果使用圆括号,则可以在代码块中同时使用这两个命令,并且不需要担心'&s。 – SomethingDark

回答

0

随着if exist使用VARIABLENAME,不是变量本身(不%

你行

if not defined %answer% echo Not an acceptable answer & goto READYTOBEGIN? 

解析(因为%answer%为空)为:

if not defined echo Not an acceptable answer & goto READYTOBEGIN? 

echo是也没有定义(可能),所以要执行的命令是Not - 这lea ds发生错误“未找到命令”。
如果它定义,没有错误,但这并没有太大的好处。让我们假设,用户输入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小号逮住