batch-file - 如何让程序正确运行
问题描述
这个使文件 out1.txt 中的所有字符串反转的程序工作错误。在 result.txt 中,我发现最后一个字符串输入错误 <a >020701BT</a> 后跟 <a>020701BT</a>
如何正确反转文本文件
@echo off
setlocal enabledelayedexpansion
set I=0
for /F "tokens=*" %%k in (out1.txt) do (
set /A I=!I! + 1
set LINE!I!=%%k
)
for /L %%c in (!I!,-1,1) do (
echo !LINE%%c! >> result.txt
)
out1.txt - 输入文件
<a>020701BT</a>
< >710f7fa45c6911e9648d2cfda1bf577d</ >
<一>020701BT</一>
< >cde9bde81a5b11e96b882cfda1bf577d</ >
<一>020701BT</一>
< >d266b9021a5b11e96b882cfda1bf577d</ >
<一>040109GT</一>
result.txt 输出文件最后有错误
< >cde9bde81a5b11e96b882cfda1bf577d</ >
<a>020701BT</a>
< >710f7fa45c6911e9648d2cfda1bf577d</ >
<a>020701BT</a>
<a>020701BT</a>
解决方案
虽然 Gerhard Barnard 的答案有效(在将输出重定向到新文件之后)
并且通常 XML 文件应该使用 XML 工具处理,
我建议使用带有环视的正则表达式的 PowerShell脚本
RE 的优点是它独立于位置工作,只需要定义的前缀/后缀。
在 cmd 行/批处理中讨论主题
powershell -NoP -C "(Get-Content .\goods.xml -raw) -replace '(?<=\<frame\>)..(?=/)'|Set-Content .\goods.xml"
这里是正则表达式(?<=\<frame\>)..(?=/)
- 删除任何两个字符
..
<frame>
前面是包含在零长度肯定后向断言中的文字文本- 后跟一个
/
包含在零长度正前瞻断言中的文字
推荐阅读
- c# - 从 HUGE Xml 转换为 Json
- sql-server - 通过 keytab 连接到 SQL Server 时,在 keytab 文件中显示为 SPN 的警告不可用
- ansible - ansible-playbook 无法使用正则表达式
- sql - 如何获取日期范围内的数据总和
- c++ - 删除另一个类中一个类的对象时析构函数如何工作
- android - 我的应用无法在 Google Play 商店中搜索
- javascript - 如何使用此处的反向地理编码从所有检索到的数据中获取城市名称?
- go - Kubebuilder 的 Rbac 规则
- c# - 如何等待浏览器完全加载PDF以在c#中打印
- java - 如何将我的数据发布到 API 并读取响应?