String 如何在Batchfile中结束回显字符串?

String 如何在Batchfile中结束回显字符串?,string,batch-file,echo,String,Batch File,Echo,我正在尝试创建一个批处理程序,该程序在一行中包含多个echo命令和if命令。问题是,当我在echo命令之后键入命令时,它认为它是echo字符串的一部分,并将其打印到屏幕上,而不是执行它 例如: 如果%var1%==1回显%var2%(这里我需要结束回显)如果%var3%==1回显%var4% echo. 如果%var5%==1回显%var6%(在这里我需要结束回显)如果%var7%==1回显%var8% 我确信这相当简单,但我需要知道是否有一些字符或命令可以结束一行而不被解释为消息的一部分。提前

我正在尝试创建一个批处理程序,该程序在一行中包含多个
echo
命令和
if
命令。问题是,当我在
echo
命令之后键入命令时,它认为它是
echo
字符串的一部分,并将其打印到屏幕上,而不是执行它

例如:


如果%var1%==1回显%var2%(这里我需要结束回显)如果%var3%==1回显%var4%

echo.

如果%var5%==1回显%var6%(在这里我需要结束回显)如果%var7%==1回显%var8%


我确信这相当简单,但我需要知道是否有一些字符或命令可以结束一行而不被解释为消息的一部分。提前谢谢

您需要编写不带换行符的字符串<代码>回显不会对此进行响应。相反,您可以使用以下解决方法:

<nul set /p"=first "
<nul set /p"=second "
echo third

您需要编写不带换行符的字符串<代码>回显
不会对此进行响应。相反,您可以使用以下解决方法:

<nul set /p"=first "
<nul set /p"=second "
echo third

您可以使用&&分隔代码段:

if %Var1% equ 12 echo %Var1% && if %Var2% neq 12 echo %Var2%

我对它进行了测试,它可以工作。

您可以使用&&来分离代码片段:

if %Var1% equ 12 echo %Var1% && if %Var2% neq 12 echo %Var2%

我对它进行了测试,效果很好。

我在这里发布了这个答案,因为我之前的评论似乎没有引起注意

通常使用
&
分隔同一行中的多个单独命令;但是,如果
&
放在
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

我把这个答案贴在这里是因为我之前的评论似乎没有引起注意

通常使用
&
分隔同一行中的多个单独命令;但是,如果
&
放在
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

使用if语句可以更容易地用set语句构建echo,然后在后面或最后的行上进行echo。看起来您正试图根据if将字符串/变量连接在一起,然后回显结果。这个示例不一定是我想要做的。但我肯定有办法结束回音串。你知道它是什么吗?我不知道,但是这个答案()可能对你有启发。有没有特别的原因让你必须把所有的
if
语句都放在同一行?将每个
if
放在各自独立的行上可以完全解决这个问题。
(if%var1%==1 echo%var2%)&if%var3%==1 echo%var4%
使用if语句可以更容易地用set语句建立echo,然后在后面或最后的行上进行回显。看起来您正试图根据if将字符串/变量连接在一起,然后回显结果。这个示例不一定是我想要做的。但我肯定有办法结束回音串。你知道它是什么吗?我不知道,但是这个答案()可能对你有启发。有没有特别的原因让你必须把所有的
if
语句都放在同一行?如果将每个
if
放在各自独立的行上,则可以完全解决问题。
(如果%var1%==1 echo%var2%)&如果%var3%==1 echo%var4%
则不能。如果第一个
如果
为非真,则第二个甚至不会执行。您需要将整个第一个
if
括在括号中,就像我在上面的评论中所做的那样……测试如下:
set Var1=ABC
-
set Var2=XYZ
-
if%Var1%eq 12 echo%Var1%和&if%Var2%neq 12 echo%Var2%
。它应该显示“XYZ”,因为Var2不是12,而是什么也不显示……不,它不是。如果第一个
如果
为非真,则第二个甚至不会执行。您需要将整个第一个
if
括在括号中,就像我在上面的评论中所做的那样……测试如下:
set Var1=ABC
-
set Var2=XYZ
-
if%Var1%eq 12 echo%Var1%和&if%Var2%neq 12 echo%Var2%
。它应该显示“XYZ”,因为Var2不是12,而是不显示任何内容。。。