batch-file - 一次查找和替换 2 个不同字符串的批处理脚本
问题描述
我有一个类似这个示例的 XML 文件:
<fruit>
<desc>xxx / yyy / zzz</desc>
</fruit>
<fruit>
<desc></desc>
</fruit>
<fruit>
<desc>abc / def / ghi</desc>
</fruit>
我正在使用批处理脚本来修复节点“desc”。这是修复后的结果:
<fruit>
<desc>xxx/yyy/zzz</desc>
</fruit>
<fruit>
<desc>N/A</desc>
</fruit>
<fruit>
<desc>abc/def/ghi</desc>
</fruit>
如何在不扫描所有文件两次的情况下替换 2 个不同的字符串?这是脚本:
@echo off
setlocal enabledelayedexpansion
set "input_xml=xmlfile.xml"
set "search=^<desc^>^</desc^>"
set "search2= / "
set "replace=^<desc^>N/A^</desc^>"
set "replace2=/"
for /f "delims=" %%i in ('type "!input_xml!" ^& break ^> "!input_xml!" ') do (
set FixNullNode=%%i
echo !FixNullNode:%search%=%replace%! >>"!input_xml!"
)
for /f "delims=" %%v in ('type "!input_xml!" ^& break ^> "!input_xml!" ') do (
set FixSpaceSlash=%%v
echo !FixSpaceSlash:%search2%=%replace2%! >>"!input_xml!"
)
pause
谢谢
解决方案
只需将第二个替换移动到第一个 for 命令中。
@echo off
setlocal enabledelayedexpansion
set "input_xml=xmlfile.xml"
set "search=^<desc^>^</desc^>"
set "search2= / "
set "replace=^<desc^>N/A^</desc^>"
set "replace2=/"
for /f "delims=" %%i in ('type "!input_xml!" ^& break ^> "!input_xml!" ') do (
set "Fix=%%i"
set "Fix=!Fix:%search%=%replace%!"
echo !Fix:%search2%=%replace2%! >>"!input_xml!"
)
推荐阅读
- appium - 使用 Xcode 构建命令或 appium 构建时测试失败
- java - LMAX 的颠覆者。如何定义多个EventHandlerGroup?
- python - 如何删除 cuInit failed: CUDA (PyCuda) 中的未知错误
- javascript - 从字符串解析键路径到数组项
- matrix - PyTorch 向量/矩阵/张量的元素乘积
- python - 在指定开始和结束行号后,从 Python 中的数据框/csv 文件中选择随机行(数据)?
- r - R中的聚合字符串
- sapui5 - 加快对象页面的初始化
- c - 新终端提示后连接到 stdio 打印输出的管道
- javascript - 在angular js中使用ng-class分配css类