2014-03-30 95 views
0

我有這2個文件:批處理文件替換其他字符串後的字符串?

的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 =」之後的文本(假設我不知道它後面會發生什麼)。任何幫助?

回答

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 
+0

順便說一句,如何在bash(Linux)腳本上做到這一點? – user3479320

+0

@ user3479320 - 這是一個完全不同的問題,我確定已經多次詢問和回答。查看awk和sed實用程序。 – dbenham

相關問題