在我的Windows 10中,我在同一目录下有100多个XML文件,它们包含相同的标记,例如<Number>
,其内容不同,如<Number>4564564</Number>
或<Number>7777</Number>
。Windows - 使用script:sed of bash或cmd batch在一堆文件中查找/替换XML标记中的内容?
现在,我想用123456
替换所有不同的值。
我安装了Git bash,找到sed
可能是有用的。但是,AFAIK,for
在bash
不能在一个目录下迭代文件,并且我知道没有其他方式在bash中迭代文件,而是在Windows批处理文件中可以使用FOR
(如果我错了,请纠正我)。所以,
- 我可以重复使用批量
FOR
和循环,使用bash的sed
,即混合GNU的bash命令和CMD命令?当我测试它似乎不可能。 - 如果以前是不可能的,我可以做它,或在纯bash脚本,或纯批量?
什么我已经是这样的批次:
@echo on
setlocal ENABLEEXTENSIONS
set here=%cd%
for /R %here% %%G in (*.xml) do (
echo %%G
for /F "skip=2 tokens=* " %%H in (%%G) do (
echo %%H | sed -r 's:<Number>([0-9]+)</Number>:<Number>123456</Number>:'
)
)
endlocal
运行此批处理中cmd
和Git的bash给了我同样的错误:
The system cannot find the path specified.
我已经安装了Git的bash和明显,可以在Git bash和cmd
中找到sed.exe
。在cmd
,sed --version
给我:
sed (GNU sed) 4.2.2
...
伟大的解决方案,在这里工作!现在我想知道哪些批量爱好者会说... – FaithReaper
我不确定批量爱好者,但PowerShell爱好者会说使用['Get-Content .. -replace'](https://stackoverflow.com/questions/ 17144355 /何灿我替换,每一个现期的一串-IN-A-文件与-PowerShell的)。 Unix爱好者会说:过来,我们有(更多)cookies。 :) – randomir