标题: [文本处理] 批处理修改XML文件内容问题 [打印本页]
作者: zx289317972 时间: 2017-9-11 14:06 标题: 批处理修改XML文件内容问题
对于批处理,一直处于ping tracert ipconfig 阶段
现在想将
<?xml version="1.0" encoding="utf-8" ?>
<Root>
<VerAll ver="11944" />
<GameVer GameID="0" ver="18" />
<GameVer GameID="404" ver="1006" />
<GameVer GameID="504" ver="1007" />
</Root>
将其中的<GameVer GameID="404" ver="1006" /> 改成 <GameVer GameID="404" ver="1007" />
------------------------------------------------------------------------------------------------------
输出新xml文本 或者在原文本上改
<?xml version="1.0" encoding="utf-8" ?>
<Root>
<VerAll ver="11944" />
<GameVer GameID="0" ver="18" />
<GameVer GameID="404" ver="1007" />
<GameVer GameID="504" ver="1007" />
</Root>
大神帮解解惑
作者: 3518228042 时间: 2017-9-11 15:59
- @set @n=0//&cscript -nologo -e:jscript "%~0"&pause&exit/b
- with (new ActiveXObject("ADODB.Stream")){
- Type = 2;
- Mode = 3;
- CharSet = "utf-8";
- Open();
- LoadFromFile("测试.xml");
- text = ReadText(-1);
- text = text.replace(/(<GameVer GameID=\"404\" ver=\")1006(" \/>)/g,"$11007$2");
- Position = 0;
- WriteText(text);
- SetEOS();
- SaveToFile("保存.xml",2);
- Close();
- };
复制代码
等人完善,瞎写的
作者: codegay 时间: 2017-9-11 16:47
本帖最后由 codegay 于 2017-9-11 16:49 编辑
用xmlstarlet- C:\Users\root\Desktop\test>xml ed -u "Root/GameVer[@GameID=404]" -v "1000" gamver.xml
- <?xml version="1.0" encoding="utf-8"?>
- <Root>
- <VerAll ver="11944"/>
- <GameVer GameID="0" ver="18"/>
- <GameVer GameID="404" ver="1006">1000</GameVer>
- <GameVer GameID="504" ver="1007"/>
- </Root>
复制代码
加上 --inplace 直接对原文件修改:- xml ed -u "Root/GameVer[@GameID=404]" -v "1000" gamver.xml
复制代码
作者: codegay 时间: 2017-9-11 16:49
本帖最后由 codegay 于 2017-9-11 16:54 编辑
..。。哦。我理解错了。
正确改ver属性的值应该是- xml ed --inplace -u "Root/GameVer[@GameID=404]/@ver" -v "1000" gamver.xml
复制代码
使用xmlstarlet需要有xml和xpath的知识。但是知识点不是很多。w3cshool上看一下应该就差不多了。
作者: zx289317972 时间: 2017-9-11 17:44
For /f "tokens=*" %%i in ('findstr "%a%" VersionInfo.xml') do (
For /f "tokens=5 delims== " %%j in ("%%i") do (
set str=%%j
set /a var=!str:~1,-1!
set str=!str:var=var+=1!
set /a var+=1
)
)
for /f "delims=" %%a in ('findstr "%a%" VersionInfo.xml')do (
for /f "delims=" %%i in ('type "VersionInfo.xml"') do (
if %%a==%%i (echo %str%>>VersionInfo1.xml)else echo %%i>>VersionInfo1.xml
)
)
但好像只能取出来改完后,大神完善一下
作者: zx289317972 时间: 2017-9-11 17:47
回复 4# codegay
我通过for循环取出值,然后修改,写入xml 呢
作者: zx289317972 时间: 2017-9-11 17:49
回复 2# 3518228042
谢谢,我先试试看,
作者: zhanglei1371 时间: 2017-9-11 19:34
下载个wfr:网址:http://baiy.cn/#命令行工具_wide_find_-_replace- wfr *.txt -f:"<GameVer GameID=\"404\" ver=\"1006\" />" -t:"<GameVerGameID=\"404\" ver=\"1007\" />"
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |