批处理 - If 语句导致错误

Batch - If statement causes an error

我正在解析一个 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
    )
)

你需要delayed expansion(我不知道脚本的逻辑是否达到你想要的但是像这样它没有错误):

@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
    )
)