2014-10-03 93 views
0

我正在嘗試使用vbs腳本替換包含以下行的.ini文件中的限制值: CC_refund_limit = ####。## 不幸的是,####。 ##可以是任何美元值。我正在用一個標準取代: CC_refund_limit = 500.00VBS RegEx搜索和Repalce

我已經嘗試了以下方法,每個包含在人類已知的每個括號中的變體\ d \ d +甚至試圖在測試文件中使用[0-999]。只有在字符串包含寫入的實際美元值的情況下,才能使其工作的唯一方法是使用以下代碼。我在許多不同的服務器上有超過1600個實例來替代它。

任何指導,將不勝感激:

`Const ForReading = 1 
Const ForWriting = 2 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile("C:\EDC\Edc.ini", ForReading) 

strText = objFile.ReadAll 
objFile.Close 
strNewText = Replace(strText, "CC_refund_limit=200.00", "CC_refund_limit=500.00") 

Set objFile = objFSO.OpenTextFile("C:\EDC\Edc.ini", ForWriting) 
objFile.WriteLine strNewText 
objFile.Close 

`

+0

難道只包含文本單行?如果你不在乎美元的金額是多少('?i)CC_refund_limit = [$ \ d。] *' – sln 2014-10-03 19:19:51

回答

0
Const ForReading = 1 
Const ForWriting = 2 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile("C:\EDC\Edc.ini", ForReading) 
strText = objFile.ReadAll 
objFile.Close 
Set r = New Regexp 
With r 
    .pattern = "CC_refund_limit=\d+\.\d+" 
    .global = true 
End with 
StrNewText = r.Replace(strText,"CC_refund_limit=500.00") 
Set objFile = objFSO.OpenTextFile("C:\EDC\Edc.ini", ForWriting) 
objFile.WriteLine strNewText 
objFile.Close 
+0

真正的問題:當你可以寫'With'和'End With'時,寫兩條額外的行有什麼意義剛剛在'.pattern'和'.global'前加上'r'? – eurotrash 2014-10-03 20:25:38

+0

完美!謝謝。我也在研究這個版本,但卻無法讓它做任何事情。我感謝幫助! – drweimer549 2014-10-03 20:27:48