我试图在一行中创建一个具有多个echo
命令和if
命令的批处理程序。问题是当我在echo
命令后键入命令时,它认为它是echo
字符串的一部分并将其打印到屏幕而不是执行它。
例如:
if %var1% == 1 echo %var2% (right here I need to end the echo) if %var3% == 1 echo %var4%
echo.
if %var5% == 1 echo %var6% (right here I need to end the echo) if %var7% == 1 echo %var8%
我确定它相当简单,但我需要知道是否有一些字符或命令会结束一行而不被解释为消息的一部分。提前谢谢!
答案 0 :(得分:0)
您需要编写一个没有换行符的字符串。 echo
赢了。相反,您可以使用此解决方法:
<nul set /p"=first "
<nul set /p"=second "
echo third
为您的例子:
if %var1% == 1 <nul set /p=%var2%
if %var3% == 1 echo %var4%
答案 1 :(得分:0)
你可以使用&amp;&amp;分开代码:
if %Var1% equ 12 echo %Var1% && if %Var2% neq 12 echo %Var2%
我测试了它,它有效。
答案 2 :(得分:0)
我在这里发布了这个答案,因为我之前的评论似乎没有引起注意。
通常&
用于在同一行中分隔多个个别命令;但是,如果&
放在if
或for
之后(在同一行),则&
分组中的所有命令同一if
或for
。如果您想要放置几个个别 if
或for
命令(在同一行中),则需要隔离将每个命令括在括号中:
(if %var1% == 1 echo %var2%) & if %var3% == 1 echo %var4%
(if %var5% == 1 echo %var6%) & (if %var7% == 1 echo %var8%) & echo After two previous if's
(if %varX% == 1 echo This one & echo This also) & echo Independently of previous if