對不起。我想我真的不明白,你所需要的,但下面的批處理文件顯示節點B的server.xml文件中的值:
for /F "tokens=3 delims=<>" %%i in ('findstr "<b>" server.xml') do echo %%i
結果:
valA
valB
這是你想要的?
編輯:新版本根據附加註釋
@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
我假設了幾個細節。
你原諒。我標記爲答案和upvoted,我想我需要的是知道如何遍歷a的子節點,incase節點b也包含在另一個父元素中。 danke – 2012-03-28 21:27:12
文件中只有一個父節點a嗎?或者可能是其中的幾個?父節點a的每個內容都在幾個單獨的行中? – Aacini 2012-03-28 23:21:06
@some_bloody_fool:檢查新版本我張貼... – Aacini 2012-03-29 01:13:19