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

[文本处理] 如何将xml文件里的多个指定相同标签里的数字按先后出现的顺序修改成递增数字

[复制链接]
发表于 2018-4-11 21:01:40 | 显示全部楼层 |阅读模式
BAT如何修改一个文件里的多个指定行数,且进行标序
新手求教!!
现有如下格式的文本

需要将每个<ID>数</ID>进行标序
即把第4行改成<ID>1</ID>
   把第8行改成<ID>2</ID>
   把第12行改成<ID>3</ID>
   ……………………
   把第4n行改成<ID>n</ID>
   ……………………
   如此往复,直到遇见</Table>,结束标序
再将文件保存
求教如何写这样一个批处理代码,不胜感激。
发表于 2018-4-11 21:13:22 | 显示全部楼层
本帖最后由 yhcfsr 于 2018-4-11 21:14 编辑

样本文件传上来吧。自己做样本测试太麻烦啦。
BAT处理这种特殊字符一大把的文本,有点难度,不如POWERSHELL干脆。
 楼主| 发表于 2018-4-11 21:20:47 | 显示全部楼层
回复 2# yhcfsr
好的,已上传样本。
发表于 2018-4-11 22:20:08 | 显示全部楼层
本帖最后由 yhcfsr 于 2018-4-11 22:22 编辑

POWERSHELL
1.备份源文件
2.此为powershell脚本,保存为ps1扩展名文件,右键单击脚本,以powershell运行
3.未对powershell进行过设置的,可以管理员身份运行CMD,复制以下命令到命令提符 以解除脚本限制

  1. powershell -c "set-executionpolicy unrestricted"
复制代码
当然也可以管理员运行POWERSHELL,输入以下命令解除脚本限制
  1. set-executionpolicy unrestricted
复制代码
&#8203;4. WIN10以下系统如出错,可能需要去微软官网下载补丁升级powershell
  1. $SrcFile="d:\test\abcd.xml";#源文件
  2. $n=0;$str=$null;$content=$null;$i=0;
  3. $content=type $SrcFile;
  4. $content|%{
  5.    if ($_ -match '<ID>[0-9]{1,}</ID>'){ $n++;$str+=($_ -replace '<ID>[0-9]{1,}</ID>', "<ID>$n</ID>")} else {$str+=$_}
  6.    if (++$i -lt $content.count){$str+="`r`n"}
  7. }
  8. Out-File -FilePath $SrcFile -InputObject $str -NoNewline -Encoding utf8;
复制代码
 楼主| 发表于 2018-4-12 14:33:42 | 显示全部楼层
回复 4# yhcfsr
您好,感谢您的帮助。
请问我在使用powershell运行代码以后,显示错误:
Out-File : 找不到与参数名称“NoNewline”匹配的参数。
计算机系统是win6 64位的
这样是需要更新powershell吗?
 楼主| 发表于 2018-4-12 15:04:26 | 显示全部楼层
回复 4# yhcfsr
我将-NoNewline命令删除以后就能用了,很好地实现了功能,非常感谢您的帮助。
发表于 2018-4-12 16:23:31 | 显示全部楼层
回复 6# Vcehurry


    nonewline 是powersehll5才有的参数,防止最后一行生成空行,如果不介意生成空行,可以删除这个参数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 23:18 , Processed in 0.018335 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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