批量IF变量比较神秘地不起作用

时间:2016-04-22 22:39:55

标签: windows batch-file cmd

我想创建一个批处理文件,它读取2个不同的值,并根据它们的比较方式相应地进行。但是,比较永远不会奏效。代码是:

<section class="buttons" role="group"> 
  <button>button 1</button> 
  <button>button 2</button> 
  <button>button 3</button>
</section>

<section class="buttons" role="group"> 
  <button>button 1</button> 
  <button>button 2</button> 
  <button>button 3</button>
</section> 

关于条件/比较为什么不起作用的任何想法? “SET var”显示两个变量相等(var1 = 14,var2 = 14),但在IF中它们不被识别。任何指导将不胜感激!

字符串btw。是find / c的第二个输出行(查找和计数)。

3 个答案:

答案 0 :(得分:2)

IF %var1% == %var2% ...(不是#)或确定:IF "%var1%" == "%var2%" ...

顺便说一下:你的字符串看起来几乎像find /c的输出如果这是真的,并且丢失的冒号只是一个错字,你可以用以下字符拆分你的字符串:

for /f "tokens=2 delims=:" %%i in ("%string1%") do set /a var1=%%i 

甚至更简单:

set /a var1=%string1:*: =%

(从头开始删除,直至(包括):(冒号空间)(这甚至不需要/a

无需关心,如果它是两位数或一或六......

答案 1 :(得分:1)

您的作业中有额外的,不需要的冒号。这两行应如下所示:

set /a var1 =%string1:~22,2%
set /a var2 =%string2:~22,2%

变量名称后的空格正常,但仅在使用SET / A时。最好不要在那里放置一个空间,以便在没有/a选项的情况下正确地进行分配。

以下创建名称中带有空格的变量 - 通常不是一个好主意:

set var1 =%string1:~22,2%
set var2 =%string2:~22,2%

所以最好使用

set /a var1=%string1:~22,2%
set /a var2=%string2:~22,2%

set var1=%string1:~22,2%
set var2=%string2:~22,2%

答案 2 :(得分:0)

REM string1 and string2 contain e.g. the following test string "---------- COUNT.TXT: 14" set /a var1=%string1:*: =% set /a var2=%string2:*: =% IF NOT "%var1%"=="%var2%" (echo not equal)

总结建议这是工作代码的样子,应特别注意匹配语法,包括看似无害的空间。