Ветеран
Сообщения: 27449
Благодарности: 8087
|
Профиль
|
Отправить PM
| Цитировать
Из письма в PM:
читать дальше »
Цитата:
Цитата ultrarare:
В очередной раз прошу прощения за беспокойство, в теме уже как то неудобно спрашивать, но если вы посчитаете нужным, продублирую и в тему
Моя проблема с кодировками (или подозрением на них) была замечена визуально, я всегда открывал файл list.txt notepad++'ом (отображалось всё нормально), как то так получилось - открыл блокнотом, следующая строка наползла на изменяемую:
[CONF]
Proxy=true
ProxyS=127.0.0.1ProxyP=8080
Из этого следует, что после ProxyS=127.0.0.1 что то есть ("-вы видите суслика? -нет. -и я не вижу, но он есть...")
Полагаю проблема всё же в кодировке, поправьте если не в ту сторону думаю.
И ещё, не могли бы вы подставить кавычки (""), чтобы получилось ProxyS="127.0.0.1"
Пробовал изменить кодировку методом тыка (опираясь на приведённую вами ссылку http://msdn.microsoft.com/en-us/libr...v=vs.84).aspx), но помоему у меня ничего не вышло...
Была добавлена константа Const TristateTrue = -1
И далее добавлена в строку With objFSO.OpenTextFile(strFile, ForReading, TristateTrue)
Изменений не увидел, решил не тупить и написать вам ещё раз.
Уже плевать на кириллические домены, хоть бы латиница работала(
|
|
Как я только что выяснил, конец строки для RegExp из VBScript — это Lf, а не CrLf. Отсюда и кажущаяся склейка (Ваш редактор не видит первого из символов конца строки и потому не считает данную позицию концом строки). Попробуйте иначе:
читать дальше »
Код:
Option Explicit
Const ForReading = 1
Const ForWriting = 2
Dim strFile
Dim strFile4Execute
Dim strPattern
Dim objFSO
Dim strProxyS
Dim strContent
strFile = "E:\Песочница\0288\list.txt"
strFile4Execute = "c:\Windows\notepad.exe"
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strFile) Then
With objFSO.OpenTextFile(strFile, ForReading)
strContent = .ReadAll()
.Close
End With
With WScript.CreateObject("VBScript.RegExp")
.Pattern = "(\r\nProxyS=)(.*)(\r\n)"
.IgnoreCase = True
.Global = True
If .Test(strContent) Then
strProxyS = Trim(InputBox("Change ProxyS value:", "ProxyS", .Execute(strContent).Item(0).Submatches(1)))
If Len(strProxyS) > 0 Then
strContent = .Replace(strContent, "$1" & strProxyS & "$3")
With objFSO.OpenTextFile(strFile, ForWriting)
.Write strContent
.Close
End With
If objFSO.FileExists(strFile4Execute) Then
WScript.CreateObject("WScript.Shell").Run """" & strFile4Execute & """", 1, False
End If
End If
Else
WScript.Echo "Can't find any line in file [" & strFile & "] for pattern [" & .Pattern & "]."
End If
End With
Else
WScript.Echo "Can't find file [" & strFile & "]."
End If
WScript.Quit 0
А зачем кавычки? Пробелов ведь ни в IP-адресе, ни в доменном имени быть не может.
«TristateTrue» — это юникод .
|
Отправлено: 14:02, 03-07-2013
| #11
|