看着内容挺多,但我只要两个字段,最终结果如下:复制代码
- <?xml version="1.0" encoding="utf-8"?>
- <list>
- <npc id="13001" name="Heart of Warding" title="">
- <set name="level" val="70"/>
- <set name="radius" val="17"/>
- <set name="height" val="75"/>
- <set name="rHand" val="0"/>
- <set name="lHand" val="0"/>
- <set name="type" val="Folk"/>
- <set name="exp" val="490"/>
- <set name="sp" val="10"/>
- <set name="hp" val="2444.46819"/>
- <set name="mp" val="1345.8"/>
- <set name="hpRegen" val="7.5"/>
- <set name="mpRegen" val="2.7"/>
- <set name="pAtk" val="688.86373"/>
- <set name="pDef" val="295.91597"/>
- <set name="mAtk" val="470.40463"/>
- <set name="mDef" val="216.53847"/>
- <set name="crit" val="4"/>
- <set name="atkSpd" val="253"/>
- <set name="str" val="40"/>
- <set name="int" val="21"/>
- <set name="dex" val="30"/>
- <set name="wit" val="20"/>
- <set name="con" val="43"/>
- <set name="men" val="10"/>
- <set name="corpseTime" val="7"/>
- <set name="walkSpd" val="50"/>
- <set name="runSpd" val="120"/>
- <set name="dropHerbGroup" val="0"/>
- <ai type="DEFAULT" ssCount="0" ssRate="0" spsCount="0" spsRate="0" aggro="0" canMove="true" seedable="false"/>
- <skills>
- <skill id="4045" level="1"/>
- <skill id="4416" level="19"/>
- </skills>
- </npc>
- <npc id="27001" name="Orc Sniper" title="">
- <set name="level" val="10"/>
- <set name="radius" val="14"/>
- <set name="height" val="25"/>
- <set name="rHand" val="14"/>
- <set name="lHand" val="0"/>
- <set name="type" val="Monster"/>
- <set name="exp" val="0"/>
- <set name="sp" val="0"/>
- <set name="hp" val="163.28607"/>
- <set name="mp" val="108.4"/>
- <set name="hpRegen" val="2"/>
- <set name="mpRegen" val="0.9"/>
- <set name="pAtk" val="19.33758"/>
- <set name="pDef" val="61.82527"/>
- <set name="mAtk" val="13.20506"/>
- <set name="mDef" val="45.24105"/>
- <set name="crit" val="8"/>
- <set name="atkSpd" val="253"/>
- <set name="str" val="40"/>
- <set name="int" val="21"/>
- <set name="dex" val="30"/>
- <set name="wit" val="20"/>
- <set name="con" val="43"/>
- <set name="men" val="10"/>
- <set name="corpseTime" val="7"/>
- <set name="walkSpd" val="45"/>
- <set name="runSpd" val="110"/>
- <set name="dropHerbGroup" val="0"/>
- <ai type="ARCHER" ssCount="0" ssRate="0" spsCount="0" spsRate="0" aggro="0" canMove="true" seedable="false"/>
- <skills>
- <skill id="4416" level="6"/>
- </skills>
- </npc>
- <npc id="27002" name="Orc Fighter" title="">
- <set name="level" val="12"/>
- <set name="radius" val="12"/>
- <set name="height" val="22"/>
- <set name="rHand" val="1"/>
- <set name="lHand" val="0"/>
- <set name="type" val="Monster"/>
- <set name="exp" val="0"/>
- <set name="sp" val="0"/>
- <set name="hp" val="199.62322"/>
- <set name="mp" val="124.48"/>
- <set name="hpRegen" val="2.5"/>
- <set name="mpRegen" val="1.2"/>
- <set name="pAtk" val="22.99606"/>
- <set name="pDef" val="66.32989"/>
- <set name="mAtk" val="15.70333"/>
- <set name="mDef" val="48.53733"/>
- <set name="crit" val="4"/>
- <set name="atkSpd" val="253"/>
- <set name="str" val="40"/>
- <set name="int" val="21"/>
- <set name="dex" val="30"/>
- <set name="wit" val="20"/>
- <set name="con" val="43"/>
- <set name="men" val="10"/>
- <set name="corpseTime" val="7"/>
- <set name="walkSpd" val="45"/>
- <set name="runSpd" val="110"/>
- <set name="dropHerbGroup" val="0"/>
- <ai type="DEFAULT" ssCount="0" ssRate="0" spsCount="0" spsRate="0" aggro="100" canMove="true" seedable="false"/>
- <skills>
- <skill id="4416" level="6"/>
- </skills>
- </npc>
- <npc id="13036" name="Alchemist's Chest" title="">
- <set name="level" val="21"/>
- <set name="radius" val="8.5"/>
- <set name="height" val="8.5"/>
- <set name="rHand" val="0"/>
- <set name="lHand" val="0"/>
- <set name="type" val="Folk"/>
- <set name="exp" val="0"/>
- <set name="sp" val="0"/>
- <set name="hp" val="2880.37628"/>
- <set name="mp" val="1674.8"/>
- <set name="hpRegen" val="8.5"/>
- <set name="mpRegen" val="3"/>
- <set name="pAtk" val="894.75854"/>
- <set name="pDef" val="341.375"/>
- <set name="mAtk" val="611.00409"/>
- <set name="mDef" val="249.80341"/>
- <set name="crit" val="4"/>
- <set name="atkSpd" val="253"/>
- <set name="str" val="40"/>
- <set name="int" val="21"/>
- <set name="dex" val="30"/>
- <set name="wit" val="20"/>
- <set name="con" val="43"/>
- <set name="men" val="10"/>
- <set name="corpseTime" val="7"/>
- <set name="walkSpd" val="80"/>
- <set name="runSpd" val="1"/>
- <set name="dropHerbGroup" val="0"/>
- <ai type="DEFAULT" ssCount="0" ssRate="0" spsCount="0" spsRate="0" aggro="500" canMove="true" seedable="false"/>
- <skills>
- <skill id="4045" level="1"/>
- <skill id="4416" level="2"/>
- </skills>
- </npc>
- </list>
将结果输出到sour.csv中即可,谢谢复制代码
- NPCID aggro
- 13001 0
- 27001 0
- 27002 100
- 13036 500
也可以用pwsh解析:复制代码
- xmlstarlet sel -t -m '//npc' -v './@id' -o , -v './ai/@aggro' -o $'\n' a.xml
复制代码
- #&cls&powershell "type '%~0'|out-string|iex"&pause&exit
- $x = New-Object System.Xml.XmlDocument
- $x.Load(".\a.xml")
- $x.list.npc | ForEach-Object {
- $id = $_.id
- $_.ai | ForEach-Object {
- [PSCustomObject]@{npcId=$id;aggro=$_.aggro}
- }
- } | Export-Csv -NoTypeInformation a.csv
复制代码
- @echo off &setlocal enabledelayedexpansion
- (echo;NPCID, aggro
- for /f "delims=" %%x in ('dir /b /a-d "*.xml"') do (
- for /f "delims=" %%1 in (' findstr /ic:"npc id" /ic:"aggro" "%%x" ') do (
- for /f tokens^=1-12^delims^=^=^" %%a in ("%%1") do (
- set str=%%a&if "!str:~-6!" == "npc id" (set v1=%%b) else (echo !v1!, %%l)
- )
- )
- ))>sour.csv
- endlocal&exit/b
复制代码
- gawk -v"FS=\042" "BEGIN{OFS=\"\t\";print \"NPCID\taggro\"}/^[\t ]*<npc id=/,/^[\t ]*<\/npc>$/{if(/^[\t ]*<npc id=/)A=$2;if(/aggro/)print A,$12}" *.xml>sour.csv
复制代码
- @echo off&setlocal enabledelayedexpansion
- (echo,NPCID aggro&for /f "delims=" %%F in ('dir /s/b/a-d *.xml') do
- for /f tokens^=1-12^delims^=^ ^"^=^< %%a in (' findstr /ilc:"npc id=" /ilc:"aggro=" "%%~F" ') do (
- if /i "%%a"=="npc id" (set "v=%%b") else if /i "%%a"=="ai type" (echo,!v! %%l)
- ))>"sour.csv"
- endlocal&exit/b
欢迎光临 批处理之家 (http://www.bathome.net/) | Powered by Discuz! 7.2 |