Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 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