O problema é "tokens=91"
, o número máximo permitido de tokens é 31
. Você precisa de uma técnica especial para lidar com esses arquivos xml com mais de 3.000 caracteres por linha em lote. Esta técnica está além do escopo de uma resposta na SU.
BTW: se você quiser verificar o número máximo de tokens, use o seguinte código:
@echo off &setlocal enabledelayedexpansion
set /a maxtok=40
set /a curtok=0
for /l %%i in (1,1,%maxtok%) do set "tokvar=!tokvar! %%i"
echo variable with tokens: %tokvar%
:tokloop
set /a curtok+=1
set "disptok="
for /f "tokens=%curtok%" %%i in ("%tokvar%") do set "disptok=%%i"
echo %disptok% ^<-- there should be number %curtok%
if %curtok% lss %maxtok% goto :tokloop
Insted, você pode tentar o seguinte código depois de baixar o xml e colocá-lo em um arquivo ( file.xml
):
@echo off &setlocal
set "xmlfile=file.xml"
set "prefix=<artifact><displayPath>"
for /f "delims=" %%i in (%xmlfile%) do if not defined xmlline set "xmlline=%%i"
setlocal enabledelayedexpansion
:xmlloop
set /a xmlcount+=1
set "xmlline=!xmlline:*%prefix%=!"
for /f "delims=<" %%i in ("%xmlline%") do set "line%xmlcount%=%%i"
if %xmlcount% lss 3 goto:xmlloop
echo %line1%
echo %line2%
echo %line3%