我正在使用批处理为另一个程序(我没有制作)创建变量。我需要修改这些字符串;但不要替换整个文件(它很长)。然而,在研究该主题时,许多人只是建议使用 findstr 命令(该命令查找但不替换字符串)。有没有办法替换字符串而不是重写整个文件?
示例文本:
Oh it's a lovely day
粗体变化:
哦这是新的一天
(它不会重写整个文本,而是只影响某些区域。
最佳答案
您可以使用batch string substitution ;这里我假设需要替换的是:
- 整个短语:哦,这是美好的一天 - 哦,这是新的一天
逐行浏览文件并进行替换。代码如下:
@echo off
for /f "tokens=*" %%f in (.\a.txt) do (
call :replace_func %%f
)
goto :eof
:replace_func
set _local0=%*
if "%_local0%" equ "" goto :eof
:echo l0 %_local0%
echo %_local0:Oh it's a lovely day=oh it's a new day%
goto :eof
当文件在 for
循环中迭代时,字符串替换发生在 replace_func
中。
对于a.txt文件内容:
Oh it's a lovely day1
Some other text
Oh it's a lovely day2
Oh it's a lovely day3
lovely day
输出将是:
oh it's a new day1
Some other text
oh it's a new day2
oh it's a new day3
lovely day
@EDIT1:菜鸟错误:循环后没有“goto :eof”。 if
子句隐藏了由此生成的任何垃圾输出。
关于batch-file - 批处理文件 - 找到某个单词后如何替换它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34886734/