批处理文件替换其他字符串后的字符串?

时间:2014-03-30 23:17:04

标签: batch-file

我有这两个文件:

的test.txt test1.txt的

这是第一个文件的内容:

build.date=220314
build.version=1.0Rel
build.id=TestBuild1.0
build.type=DEV

这是第二个内容:

build.date=220314
build.version=1.3
build.id=TestBuildRedDot
build.type=DEV

现在。我想要的是一个批处理文件,用于更改" build.id ="之后的文本。 (假设我不知道它后面发生了什么)。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

如果您不关心文件中行的顺序,则可以使用FINDSTR去除旧的build.id行并将结果写入新文件。然后使用新值追加一个新行。最后将新文件移动到原始名称。

@echo off
>file.txt.new (
  findstr /vbl "build.id=" file.txt
  echo build.id=NewValue
)
move /y file.txt.new file.txt >nul

如果要保留行顺序,则使用FOR / F读取每一行,将行解析为变量名称和值。然后可以使用简单的IF语句来相应地处理该行。

@echo off
>file.txt.new (
  for /f "tokens=1* delims==" %%A in (file.txt) do (
    if "%%A" == "build.id" (
      echo build.id=NewValue
    ) else (
      echo %%A=%%B
    )
  )
)
move /y file.txt.new file.txt >nul

或者,您可以通过启用支持正则表达式搜索和替换的实用程序来使任务变得非常简单。我写了一篇hybrid JScript/batch utility called REPL.BAT,我发现它非常有用。以下是它如何用于您的简单任务。

@echo off
type file.txt | repl "^(build\.id=).*" "($1)NewVaue" >file.txt.new
move /y file.txt.new file.txt >nul