找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23356|回复: 4

[文本处理] 批处理如何实现xml文件匹配并替换?

[复制链接]
发表于 2013-3-15 14:25:17 | 显示全部楼层 |阅读模式
在一个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个判断,匹配后再替换?
发表于 2013-3-15 14:51:00 | 显示全部楼层
把你自己写的代码贴出来看看
 楼主| 发表于 2013-3-15 15:41:46 | 显示全部楼层
(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
发表于 2013-3-15 15:59:44 | 显示全部楼层
试试这样
  1. set "str=!str:Bay Slot Number"^>0=Bay Slot Number">1!"
复制代码
发表于 2013-3-15 16:29:19 | 显示全部楼层
目测纯批的话,循环次数较多,试试vbs
  1. Set FSO = CreateObject("Scripting.FileSystemObject")
  2. Text = FSO.OpenTextFile("a.xml").ReadAll
  3. For i = 14 to 0 step - 1
  4.    a = hex(i) : b = hex(i+1)
  5.    a = "<BYTE NAME=""Bay Slot Number"">" & a
  6.    b = "<BYTE NAME=""Bay Slot Number"">" & b
  7.    Text = Replace(Text,a,b)
  8. Next
  9. FSO.CreateTextFile("b.xml",True).Write Text
  10. MsgBox "OK"
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 07:21 , Processed in 0.019123 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表