batch-file - 批处理文件 - 找到某个单词后如何替换它?

标签 batch-file

我正在使用批处理为另一个程序(我没有制作)创建变量。我需要修改这些字符串;但不要替换整个文件(它很长)。然而,在研究该主题时,许多人只是建议使用 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/

相关文章:

windows - 如何使用批处理命令从文本文件中删除 CRLF 和新行

bash - 转义以防止正确的 shell 注入(inject)

batch-file - 如何在cmd中的txt文件中直接执行命令?

java - 如何阻止cmd.bat关闭——java jar应用程序

mysql - 在批处理脚本中正确使用变量?

windows - 使用带引号逗号的 Windows 命令行 FOR 命令

python - bat 脚本链接到 python 脚本

windows - 通过 .bat 文件打开/关闭应用程序 [Windows]

windows - 使用命令刷新cmd环境

mysql - 在启动 wamp 之前如何检查现有的 .pid?