2015-06-24 28 views
2

我解析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 
    ) 
) 
+0

計數器不是在比較的時刻定義。 – npocmaka

回答

1

你需要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 
    ) 
) 
+0

我已經定義了循環外的計數器變量加,使用延遲擴展解決了我的問題。謝謝! – ozcanovunc