我想在很多个xml文件中,提取出一些特殊格式的字符串!并输出到一个新的xml中,用批处理可以完成么!、 50
我现在需要的是count=“4”x="-230881"y="238048"z="2951"h="0"period_of_day="none"npcid="22228"这个...
我现在需要的是count=“4” x="-230881" y="238048" z="2951" h="0" period_of_day="none" npc id="22228" 这个7个字符串,将该字符串或者引号中的值提取出来 按照顺序排列 并且最重要一点 必须是同一组数值!
<spawn count="1" respawn="60" respawn_random="0" period_of_day="none">
<point x="-255086" y="232391" z="2610" h="57545"/>
<npc id="22612"/>
</spawn>
<spawn count="1" respawn="60" respawn_random="0" period_of_day="none">
<point x="-255086" y="232391" z="2610" h="57545"/>
<npc id="22612"/>
</spawn>
<spawn count="1" respawn="60" respawn_random="0" period_of_day="none">
<point x="-249848" y="239564" z="4854" h="15592"/>
<npc id="22612"/>
</spawn>
<spawn count="1" respawn="60" respawn_random="0" period_of_day="none">
<point x="-252628" y="235699" z="4932" h="18585"/>
<npc id="22613"/>
</spawn>
基本上都是这样的格式 展开
<spawn count="1" respawn="60" respawn_random="0" period_of_day="none">
<point x="-255086" y="232391" z="2610" h="57545"/>
<npc id="22612"/>
</spawn>
<spawn count="1" respawn="60" respawn_random="0" period_of_day="none">
<point x="-255086" y="232391" z="2610" h="57545"/>
<npc id="22612"/>
</spawn>
<spawn count="1" respawn="60" respawn_random="0" period_of_day="none">
<point x="-249848" y="239564" z="4854" h="15592"/>
<npc id="22612"/>
</spawn>
<spawn count="1" respawn="60" respawn_random="0" period_of_day="none">
<point x="-252628" y="235699" z="4932" h="18585"/>
<npc id="22613"/>
</spawn>
基本上都是这样的格式 展开
2个回答
展开全部
就普遍情况来说是不适合用批处理的,它处理含特殊符如&<>等文本很麻烦,且如果字符编码为UTF-8则汉字类字符的读取和输出会出现乱码
仅就所贴样文格式写了一个测试通过,能否有用就难说了
@echo off&cd/d "%~dp0"
set "fn=xxx.xml"
for /f "delims=:" %%i in ('type "%fn%"^|findstr/nc:"<spawn count"')do (
set/a "#%%i=0,q1=%%i+1,q2=q1+1"
call set/a "#%%q1%%=4,#%%q2%%=1"
)
for /f "delims=U" %%a in ('cmd/u/c "echo 唉"')do set "tab=%%a"
set "abc=abcdefghijklmnopqrstuvwxyz"
set "fs=%abc%^%tab%"
(for /f "tokens=1* delims=:" %%i in ('type "%fn%"^|findstr/n .*')do (
if defined #%%i (
for /f tokens^=1-4delims^=%fs%^"^<^,^=^ ;%%a in (
'echo "%%j"')do (
set "h1=%%a"&set "h2=%%b"&set "h3=%%c"&set "h4=%%d"
setlocal enabledelayedexpansion
if !#%%i! equ 0 set/p=!h1!<nul,
if !#%%i! equ 4 set/p=!h1!,!h2!,!h3!,!h4!,<nul
if !#%%i! equ 1 echo;!h1!
endlocal
)
)
))>new.xml
pause
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir/b *.xml') do (
(for /f "tokens=1*" %%i in ('type "%%a"') do (
set s=%%j
if "!s:~,5!"=="count" (echo.!m!&set m=%%j) else set m=!m! %%j
set m=!m:^/=!
set m=!m:^>=!)
echo !m!)>"新%%i")
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询