2012-02-09 5 views
0

のは、私は次を含むファイルを持っているとしましょう:Windowsのバッチでファイル内のテキスト行を変更

set_t lorem = "168" 
set_t ipsum = "913" 
set_t dolor = "294" 
... 

本当に、設定されているものを、私は私が働いているバッチファイルで知ることができないだけ。私が確かに知っていることは、 "set_t lorem"の部分です。

しかし、私は、それはすなわち100

で(set_tのLoremの168すなわち)がどのような値交換する必要がどのように私は、バッチファイルでこれを行うだろうか? VBSまたは外部バイナリは正常です。多くの従属関係には偉大ではありません。大量に配布する必要があります。

答えて

1

はここでVBScriptのソリューションです:

Option Explicit 

Const ForReading = 1 
Const ForWriting = 2 

Dim filename, prefix, newvalue, fso, file, str, line 
Set fso = CreateObject("Scripting.FileSystemObject") 

' Read and validate the parameters 
If Not WScript.Arguments.Count = 3 Then 
    Wscript.Echo "Syntax: PatchData FileName Prefix NewValue" 
    Wscript.Quit 1 
End If 
filename = Wscript.Arguments(0) 
prefix = Wscript.Arguments(1) 
newvalue = Wscript.Arguments(2) 
If Not fso.FileExists(filename) Then 
    Wscript.Echo "Filename does not exists " & filename 
    Wscript.Quit 1 
End If 

' Read the file 1 line at a time into a string, patching as we go 
str = "" 
Set file = fso.OpenTextFile(filename, ForReading) 
While not file.AtEndOfStream 
    line = file.ReadLine 
    If Left(line, Len(prefix)) = prefix Then 
    line = prefix & " = """ & newvalue & """" 
    End If 
    str = str & line & vbCrLf 
Wend 
Set file = Nothing 

' Write the patched string back to the file 
Set file = fso.OpenTextFile(filename, ForWriting) 
file.Write str 
Set file = Nothing 
+0

は、私は、コマンドライン引数を経由して、それを使用することができます何かにそれを作ることができますか?例えば:cscript // nologo script.vbs "file.txt" "set_t lorem" "100"? –

+0

回答が更新されました。がんばろう。 –

+0

編集してくれてありがとう、完璧に働いています! –

関連する問題