如果文本文件中的行与模式匹配,则替换该行

时间:2017-06-02 16:02:54

标签: windows batch-file cmd

我试图循环一个特定的文件,看看是否有任何一行包含某个单词或文字,我想要替换整行。我不确定我是怎么做的。

现在这就是我所拥有的:

@echo off
setlocal enabledelayedexpansion

FOR /F "usebackq delims=" %%G IN ("C:\folder\myfile.properties") DO (
  Set Line="transaction.sic.lettreEnvironnementBackend"
   IF %%G == %Line% (
      replace that line with new text
   )
)

pause
endlocal

2 个答案:

答案 0 :(得分:1)

@echo off
setlocal enabledelayedexpansion

Set "Line=transaction.sic.lettreEnvironnementBackend"
(
FOR /F "usebackq delims=" %%G IN ("C:\folder\myfile.properties") DO (
   IF "%%G"=="%Line%" (
      echo replacement line
   ) else (echo %%G)
)
)>replacement_filename

pause
endlocal

请注意,替换文件名不应是源文件名。测试完成后,move替换文件为原始文件名(如果需要)。

另请注意,该指令将与line的内容完全匹配 - 此行不允许任何其他字符。

语法SET "var=value"(其中value可以为空)用于确保任何杂散尾随空格不包含在分配的值中。

答案 1 :(得分:0)

在PowerShell中也很容易。

openssl