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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Поиск строки по маске в txt файле и замена всей строки из InputBox

Ответить
Настройки темы
VBS/WSH/JS - [решено] Поиск строки по маске в txt файле и замена всей строки из InputBox

Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте.
Помогите с изменением строки в txt файле

Имеется файл list.txt, нужно найти в нём строку начинающуюся с "ProxyS=тут ip адрес" и заменить на введённые данные из InputBox (ip),
фактически всю строку менять не нужно, просто нужно подставить введённый в InputBox ip
и если такое возможно то было бы очень полезно, в строке ввода InputBox'а отображать текущий ip который уже был прописан в "ProxyS=тут ip адрес"
то есть оставить данный ip и при нажатии кнопки "Ok" ip не поменялся на пустое значение.
и затем запустить программу в той же директории (.exe)
если не затруднит, то было бы восхитительно при нажатии кнопки "Отмена" просто завершить скрипт без запуска программы.

Отправлено: 05:29, 03-07-2013

 

Ветеран


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



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
А зачем кавычки? Пробелов ведь ни в IP-адресе, ни в доменном имени быть не может. »
Дурная голова, рукам покоя не даёт :D

Цитата Iska:
«TristateTrue» — это юникод . »
Да я когда этот файл в юникоде сохранял, строка уплывала обратно, вот и пытался экспериментировать)

Большое спасибо вам, надеюсь вопросов более не возникнет

Отправлено: 14:37, 03-07-2013 | #12



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Поиск строки по маске в txt файле и замена всей строки из InputBox

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Поиск строки по слову и добавление новой строки после найденой. Mikhael2011 Скриптовые языки администрирования Windows 17 16-03-2017 03:37
CMD/BAT - Замена строки в txt файле Сергей_Першин@vk Скриптовые языки администрирования Windows 0 07-06-2012 14:56
Разное - Word - Поиск и выделение всей строки с найденным словом Kost Troll Microsoft Office (Word, Excel, Outlook и т.д.) 1 09-07-2011 01:27
CMD/BAT - [решено] Поиск и удаление строки в файле по сложным условиям m0nkrus Скриптовые языки администрирования Windows 9 26-06-2011 10:37
CMD/BAT - [решено] Поиск строки в файле и замена её на набор из случайных чисел и букв Sub-Zero Скриптовые языки администрирования Windows 6 08-02-2011 18:54




 
Переход