[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理修改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>
大神帮解解惑

  1. @set @n=0//&cscript -nologo -e:jscript "%~0"&pause&exit/b
  2. with (new ActiveXObject("ADODB.Stream")){
  3.     Type = 2;
  4.     Mode = 3;
  5.     CharSet = "utf-8";
  6.     Open();
  7.     LoadFromFile("测试.xml");
  8.     text = ReadText(-1);
  9.     text = text.replace(/(<GameVer GameID=\"404\" ver=\")1006(" \/>)/g,"$11007$2");
  10.     Position = 0;
  11.     WriteText(text);
  12.     SetEOS();
  13.     SaveToFile("保存.xml",2);
  14.     Close();
  15. };
复制代码
等人完善,瞎写的

TOP

本帖最后由 codegay 于 2017-9-11 16:49 编辑

用xmlstarlet
  1. C:\Users\root\Desktop\test>xml ed -u "Root/GameVer[@GameID=404]" -v "1000" gamver.xml
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <Root>
  4.   <VerAll ver="11944"/>
  5.   <GameVer GameID="0" ver="18"/>
  6.   <GameVer GameID="404" ver="1006">1000</GameVer>
  7.   <GameVer GameID="504" ver="1007"/>
  8. </Root>
复制代码
加上 --inplace 直接对原文件修改:
  1. xml ed -u "Root/GameVer[@GameID=404]" -v "1000" gamver.xml
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

本帖最后由 codegay 于 2017-9-11 16:54 编辑

..。。哦。我理解错了。

正确改ver属性的值应该是
  1. xml ed --inplace -u "Root/GameVer[@GameID=404]/@ver" -v "1000" gamver.xml
复制代码
使用xmlstarlet需要有xml和xpath的知识。但是知识点不是很多。w3cshool上看一下应该就差不多了。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

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
    )
)

但好像只能取出来改完后,大神完善一下

TOP

回复 4# codegay

我通过for循环取出值,然后修改,写入xml 呢

TOP

回复 2# 3518228042


    谢谢,我先试试看,

TOP

下载个wfr:网址:http://baiy.cn/#命令行工具_wide_find_-_replace
  1. wfr *.txt -f:"<GameVer GameID=\"404\" ver=\"1006\" />" -t:"<GameVerGameID=\"404\" ver=\"1007\" />"
复制代码

TOP

返回列表