2014-10-03 3 views
0

Я пытаюсь использовать скрипт vbs для замены предельного значения в файле .ini, который содержит следующую строку: CC_refund_limit = ####. ## К сожалению, ####. ## может быть любой долларовой стоимостью. Я заменяя стандарт: CC_refund_limit = 500,00VBS RegEx Search and 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

ответ

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', когда вы могли бы просто застряли 'r' перед' .pattern' и '.global'? – eurotrash

+0

Отлично! Благодарю. Я тоже работал над этой версией, но просто не мог заставить ее ничего сделать. Я ценю помощь !!! – drweimer549