Windows Batch-If语句导致错误

Windows Batch-If语句导致错误,windows,string,parsing,batch-file,xml-parsing,Windows,String,Parsing,Batch File,Xml Parsing,我正在分析一个xml文件,其格式如下: <ResourcePicture Name="a.jpg"> <GeneratedPicture Name="b.jpg"/> <GeneratedPicture Name="c.jpg"/> </ResourcePicture> 我可以打印图片的每个名称,但我想检查里面的if语句。然而,我得到了一个错误“

我正在分析一个xml文件,其格式如下:

<ResourcePicture Name="a.jpg">
    <GeneratedPicture Name="b.jpg"/>            
    <GeneratedPicture Name="c.jpg"/>
</ResourcePicture>

我可以打印图片的每个名称,但我想检查里面的if语句。然而,我得到了一个错误“<此时是意外的。”但是当我删除if语句时,它也可以正常工作。那么我错过了什么?提前谢谢

set "xmlFile=pictures.xml"

REM split xml file into lines
for /f "tokens=* skip=2" %%a in (%xmlFile%) do (

    REM %%a contais a string like <ResourcePicture Name="a.jpg">    
    set "currnetLine=%%a"
    set "currnetLine=!currnetLine:"=+!"
    set counter=0

    for /f "delims=+ tokens=2" %%c in ("!currnetLine!") do (    

        REM %%c contains the picture name like a.jpg
        set /a counter=counter+1

        REM CHECKING SOMETHING
        if not %counter%==1 ( echo abc )

        echo %%c
    )
)
set“xmlFile=pictures.xml”
REM将xml文件拆分为行
对于(%xmlFile%)中的/f“令牌=*skip=2”%%a,请执行以下操作(
REM%%a contais是一个字符串
设置“currnetLine=%%a”
设置“currnetLine=!currnetLine:=+!”
设置计数器=0
对于/f“delims=+令牌=2”%%c in(“!currnetLine!”)do(
REM%%c包含类似于a.jpg的图片名称
设置/a计数器=计数器+1
雷姆在检查什么
如果不是%counter%==1(回显abc)
回声%%c
)
)
您需要(我不知道脚本的逻辑是否达到了您的要求,但像这样它没有错误):

@echo关闭
设置“xmlFile=pictures.xml”
REM将xml文件拆分为行
setlocal enableDelayedExpansion
对于(%xmlFile%)中的/f“令牌=*skip=2”%%a,请执行以下操作(
REM%%a contais是一个字符串
设置“currnetLine=%%a”
设置“currnetLine=!currnetLine:=+!”
设置计数器=0
对于/f“delims=+令牌=2”%%c in(“!currnetLine!”)do(
REM%%c包含类似于a.jpg的图片名称
设置/a计数器=计数器+1
雷姆在检查什么
如果不是!计数器!==1(回声abc)
回声%%c
)
)

在比较时未定义计数器。我已在loop plus外部定义了计数器变量,使用延迟扩展解决了我的问题。非常感谢。
@echo off
set "xmlFile=pictures.xml"

REM split xml file into lines
setlocal enableDelayedExpansion
for /f "tokens=* skip=2" %%a in (%xmlFile%) do (

    REM %%a contais a string like <ResourcePicture Name="a.jpg">    
    set "currnetLine=%%a"
    set "currnetLine=!currnetLine:"=+!"
    set counter=0

    for /f "delims=+ tokens=2" %%c in ("!currnetLine!") do (    

        REM %%c contains the picture name like a.jpg
        set /a counter=counter+1

        REM CHECKING SOMETHING
        if not !counter! == 1 ( echo abc )

        echo %%c
    )
)