批处理文件中的字符串比较无效

时间:2015-09-25 08:53:10

标签: windows batch-file if-statement cmd

我有这段代码:

SETLOCAL enabledelayedexpansion enableextensions

SET OutofService=Weblog_Doc(file:///C:/Bla/BlaKon.htm?send=2000)


REM - Declare and set the Array

FOR /f "delims=" %%a IN (C:\Folder1\log.dat) DO (
    SET /a c+=1
    SET x[!c!]=%%a          
)   

REM - Read Array from end to start
FOR /l %%I IN (!c! -1 1) DO (                   

    SET _result=!x[%%I]:~-47%!      

    ECHO !_result!
    ECHO !OutofService!

    IF "!_result!"=="!OutofService!" (              
        ECHO yahooo!                
    )           
)

文件log.dat中的字符串如下:

09/17/15 15:18:52:577 Container:
Weblog_Doc(file:///C:/Bla/BlaKon.htm?send=2000)

我的ECHO语句正在输出结果:

Weblog_Doc(file:///C:/Bla/BlaKon.htm?send=2000)
Weblog_Doc(file:///C:/Bla/BlaKon.htm?send=2000)

if语句返回false而不是输出yahooo!,因为这两个字符串应该相等。我做错了什么?

1 个答案:

答案 0 :(得分:1)

SET x[!c!]=%%a          
              ^^^^^^^^^^ Spaces included in value
....
SET _result=!x[%%I]:~-47%!      
                          ^^^^^^ Spaces included in value

尝试(不需要第三行中的百分号)

SET "OutofService=Weblog_Doc(file:///C:/Bla/BlaKon.htm?send=2000)"
....
SET "x[!c!]=%%a"
....
SET "_result=!x[%%I]:~-47!"

这样,在引用赋值操作时,引号不包含在值中,也不包括结束空格(如果存在)。