2017-06-02 42 views
0

我试图循环一个特定的文件,并查看是否有任何行包含某个单词或文本,并且我想要替换整行。我不知道我是如何做到的。如果文本文件中的某行匹配模式,则将其替换为一行

现在这算什么,我有:

@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 

回答

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"(其中值可能为空)用于确保任何杂散结尾空格不包含在分配的值中。

+0

它重新创建et新文件,但不回应IF ELSE语句中的任何内容 – DarkVision

+0

新文件中包含什么内容?请注意,批次可能对布局非常敏感。最好剪切并粘贴代码。使用文字处理器通常会更改代码,使其看起来更“正常” - 例如,它可能会用“智能报价”替换引号。一次性使用'notepad',但最好使用像editplus或'notepad ++'这样的文本编辑器 – Magoo

0

在PowerShell中也很容易。

Get-Content .\OutputFile.txt | 
    % { if ($_ -eq 'Warning message') { 'NEW WARNING' } else { $_ } } 
相关问题