标题: [文本处理] 批处理如何实现xml文件匹配并替换? [打印本页]
作者: wodesitanfu 时间: 2013-3-15 14:25 标题: 批处理如何实现xml文件匹配并替换?
在一个xml文件中,有几千行,某些行中,含有如下代码
<BYTE NAME="Bay Slot Number">0</BYTE>
<BYTE NAME="Bay Slot Number">1</BYTE>
<BYTE NAME="Bay Slot Number">2</BYTE>
..........
<BYTE NAME="Bay Slot Number">E</BYTE>
现在,我想用批处理,把里面的某些代码,按如下关系替换
"Bay Slot Number">n ->"Bay Slot Number">n+1
所以换算完后
<BYTE NAME="Bay Slot Number">0</BYTE> 转换成 <BYTE NAME="Bay Slot Number">1</BYTE>
<BYTE NAME="Bay Slot Number">1</BYTE> 转换成<BYTE NAME="Bay Slot Number">2 </BYTE>
....
我的难点如下
1 Bay Slot Number">0替换的是,我是用set去替换,但貌似"和>号都无法处理
2 9转换成A怎么转?A转换为B类似问题似。先判断为A,然后转ASIC码,再加1?还是干脆用16个判断,匹配后再替换?
作者: BAT-VBS 时间: 2013-3-15 14:51
把你自己写的代码贴出来看看
作者: wodesitanfu 时间: 2013-3-15 15:41
(for /f "tokens=1* delims=:" %%a in ('findstr /n ".*" u90mpb_20130131.xml') do (
set str=%%b
setlocal enabledelayedexpansion
if "!str!" neq "" (
set str=!str:500A0D10=%sasadd:~0,8%!
)
if "!str!" neq "" (
set str=!str:008A7B3F=%sasadd:~8,6%3F!
)
if "!str!" neq "" (
set str=!str:Bay Slot Number”">0=Bay Slot Number">1! ::先尝试转换一个,但这么做实现不了替换
)
echo,!str!
endlocal
))>tempA_3F.xml
作者: terse 时间: 2013-3-15 15:59
试试这样- set "str=!str:Bay Slot Number"^>0=Bay Slot Number">1!"
复制代码
作者: apang 时间: 2013-3-15 16:29
目测纯批的话,循环次数较多,试试vbs- Set FSO = CreateObject("Scripting.FileSystemObject")
- Text = FSO.OpenTextFile("a.xml").ReadAll
- For i = 14 to 0 step - 1
- a = hex(i) : b = hex(i+1)
- a = "<BYTE NAME=""Bay Slot Number"">" & a
- b = "<BYTE NAME=""Bay Slot Number"">" & b
- Text = Replace(Text,a,b)
- Next
- FSO.CreateTextFile("b.xml",True).Write Text
- MsgBox "OK"
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |