2015-06-24 2 views
2

Я разборе XML-файл его формат, как:Batch - Если заявление вызывает ошибку

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

я могу напечатать каждое имя фотографии, но я хочу кое-что проверить с, если заявление внутри там. Однако я получаю сообщение об ошибке «< был неожиданным в это время». но когда я удаляю оператор 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

Смежные вопросы