2017-06-02 11 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

それがら、新しいファイルを作成し直しますが、新しいファイルにあるものIF ELSE文の – DarkVision

+0

から何かをエコーし​​ないのですか?バッチはレイアウトに非常に敏感であることに注意してください。コードをカットアンドペーストすることをお勧めします。ワードプロセッサを使用するとコードが変更され、通常のテキストに見えるようになります。たとえば、引用符を "スマート引用符"に置き換えることができます。一度に 'notepad'を使いますが、' editplus'や 'notepad ++'のようなテキストエディタを使う方が良いでしょう。 – Magoo

0

PowerShellでも簡単です。

Get-Content .\OutputFile.txt | 
    % { if ($_ -eq 'Warning message') { 'NEW WARNING' } else { $_ } } 
関連する問題