如何用批处理 替换xml指定节点的内容?

现在有两个文件:文件1:a.xml<file><mail>aaa@163.com</mail></file>文件2:b.txtzhangsan@126.comlisi@1... 现在有两个文件:
文件1:a.xml
<file>
<mail>aaa@163.com</mail>
</file>

文件2: b.txt
zhangsan@126.com
lisi@163.com
wangwu@sina.com
zhaoliu@163.com
tianqi@163.com

需求是批处理文件test.bat,循环的按行读取b.txt中的内容替换a.xml中<mail>节点中的mail地址。
例如,第一次执行test.bat,读取b.txt第一行zhangsan@126.com,替换<mail>节点中的mail地址:aaa@163.com
第二次执行test.bat,读取b.txt第一行lisi@163.com,替换<mail>节点中的mail地址:hangsan@126.com
以此下去,当一轮替换完后重新读取第一行mail替换。

批处理还不太懂,希望批处理大侠们帮帮忙,谢谢
展开
 我来答
朴素且可爱灬小喵1
2012-04-13 · TA获得超过2902个赞
知道大有可为答主
回答量:1713
采纳率:89%
帮助的人:520万
展开全部
如果您的a.xml文件样式固定,那倒好办了。
写一个批处理test.bat:
@echo off
@setlocal enabledelayedexpansion
@if exist a_bak.xml @del a_bak.xml
@ren b.txt b_old.txt
@ren a.xml a_bak.xml
@set li=1
@for /f %%i in (b_old.txt) do (
@set nm=%%i
if !li!==1 (
@echo ^<file^> >> a.xml
@echo ^<mail^>!nm!^<^/mail^> >> a.xml
@echo ^<^/file^> >> a.xml
) else (
@echo !nm! >> b.txt
)
@set /a li+=1
)
把test.bat与a.xml和b.txt放在一个文件夹下面,由于这段代码会重写a.xml和b.txt,因此先复制一份b.txt,防止您的list丢了。
然后每次执行test.bat时:
1、将当前a.xml和b.txt存为a_bak.xml和b_old.txt;
2、b.txt的第一行会替换a.xml中<mail>节点内容;
3、删除原有b.txt的第一行,存为新的b.txt。
只要执行过一次,除去您的“b.txt复件”,应该文件夹中有4个文件:
a.xml、a_bak.xml、b.txt、b_old.txt;
其中,a.xml永远是您最后一次生成的文件,b.txt是您接下来要用的列表;另外两个是为了防止意外帮您留的。
上述代码,已在XP下测试通过。
更多追问追答
追问
你好,非常感谢你的回答,我测试了一下,第一次执行test.bat,b.txt的第一行被删掉,a.xml 替换成功。第二次执行test.bat,a.xml 依然是zhangsan@126.com,b.txt 变成了:
lisi@163.com
wangwu@sina.com
zhaoliu@163.com
tianqi@163.com
lisi@163.com
wangwu@sina.com
zhaoliu@163.com
tianqi@163.com
请你帮忙解决一下,如果能够实现。b.txt 可以随意定义,excle , xml 格式都可以,谢谢!
追答
不好意思,按最后思路改版时,少了一行。现在更正test.bat的内容:
@echo off
@setlocal enabledelayedexpansion
@if exist a_bak.xml @del a_bak.xml
@if exist b_old.txt @del b_old.txt
@ren b.txt b_old.txt
@ren a.xml a_bak.xml
@set li=1
@for /f %%i in (b_old.txt) do (
@set nm=%%i
if !li!==1 (
@echo ^ >> a.xml
@echo ^!nm!^ >> a.xml
@echo ^ >> a.xml
) else (
@echo !nm! >> b.txt
)
@set /a li+=1
)
caruko
2012-04-20 · TA获得超过277个赞
知道小有建树答主
回答量:126
采纳率:0%
帮助的人:103万
展开全部
没必要执行N次,完全可以一次执行就处理完所有的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式