如何比较批处理文件中的字符串?

时间:2014-12-30 09:01:15

标签: batch-file

我正在编写一个批处理脚本,如下所示:

 @echo off
 setlocal enabledelayedexpansion
 set Current_Node="Node1"
 if "%Current_Node%" == "Node1" (
 echo "ITS INSIDE IF LOOP"
 ) else (
echo "ITS NOT INSIDE IF LOOP"
)

现在,根据上面的代码,它不应该转到else部分,但实际上它总是进入else部分。 我不知道问题是在语法中还是我比较字符串的方式。 所以,请帮帮我。

3 个答案:

答案 0 :(得分:0)

你的报价太多了。设置值时不要使用引号,或者不要在"%Current_Node%"上使用引号。 当您使用Current_Node="Node1"时,%Current_Node%将等于“Node1”,但“%Current_Node%”将等于“”Node1“”。

@echo off
 setlocal enabledelayedexpansion
 set Current_Node=Node1
echo %Current_Node%
 if "%Current_Node%" == "Node1" (
 echo ITS INSIDE IF LOOP
 ) else (
echo ITS NOT INSIDE IF LOOP
)

答案 1 :(得分:0)

根据建议,在没有必要的地方使用引号。我相信您需要使用EQU而不是==等。如果仍有问题请尝试以下。

@echo off

setlocal enabledelayedexpansion
set Current_Node=Node1

if %Current_Node% EQU Node1 (
    echo ITS INSIDE IF LOOP
) else (
    echo ITS NOT INSIDE IF LOOP
)

答案 2 :(得分:0)

设置变量时有时需要双引号,因此解决方案可以简单地将术语用双引号括起来,如下面第二行所示。它们不会成为变量的一部分。

@echo off
set "Current_Node=Node1"
if "%Current_Node%" == "Node1" (
   echo "ITS INSIDE IF LOOP"
) else (
   echo "ITS NOT INSIDE IF LOOP"
)