Простите.Я думаю, что я действительно не понимаю, что вам нужно, но пакетный файл ниже показывает значения узла b в файле server.xml:
for /F "tokens=3 delims=<>" %%i in ('findstr "<b>" server.xml') do echo %%i
Результат:
valA
valB
Isэто то, что вы хотите?
РЕДАКТИРОВАТЬ: Новая версия добавлена в соответствии с дополнительным комментарием
@echo off
setlocal EnableDelayedExpansion
set fileName=server.xml
findstr /N "<b>" %fileName% > nodesB.tmp
call :seekNodesA < nodesB.tmp
del nodesB.tmp
goto :EOF
:seekNodesA
set lineB=0
set startLine=
for /F "delims=:" %%a in ('findstr /N "a>" %fileName%') do (
if not defined startLine (
set startLine=%%a
) else (
call :checkNodeB !startLine! %%a
set startLine=
)
)
exit /B
:checkNodeB startNodeA endNodeA
if %lineB% gtr %1 goto showNodeB
set nodeB=99999999:
set /P nodeB=
for /F "tokens=1* delims=:" %%b in ("%nodeB%") do (
set lineB=%%b
set "nodeB=%%c"
)
goto checkNodeB
:showNodeB
if %lineB% gtr %2 exit /B
for /F "tokens=3 delims=<>" %%i in ("%nodeB%") do echo %%i
set nodeB=99999999:
set /P nodeB=
for /F "tokens=1* delims=:" %%b in ("%nodeB%") do (
set lineB=%%b
set nodeB=%%c
)
goto showNodeB
Учитывая этот файл данных:
<a>
<b>valB1-A</b>
<b>valB2-A</b>
</a>
<c>
<b>valB1-C</b>
<b>valB2-C</b>
</c>
<a>
<b>valB3-A</b>
<b>valB4-A</b>
</a>
Предыдущий пакетный файл получил такой результат:
valB1-A
valB2-A
valB3-A
valB4-A
Я предположил несколько деталей.