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

Компьютерный форум 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
Благодарности: 8086

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


Цитата ultrarare:
Имеется файл list.txt, »
Упакуйте файл в архив. Выложите сюда или на RGhost.

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



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

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


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


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

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


Вложения
Тип файла: txt list.txt
(133 байт, 56 просмотров)

Сделано, спасибо за внимание к теме

Отправлено: 07:23, 03-07-2013 | #3


Ветеран


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

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


ultrarare, на WSH:
читать дальше »
Код: Выделить весь код
Option Explicit

Const ForReading   = 1
Const ForWriting   = 2


Dim strFile
Dim strPattern

Dim objFSO

Dim strProxyS
Dim strContent


strFile = "E:\Песочница\0288\list.txt"

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 = "^(ProxyS=)(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$"
		.IgnoreCase = True
		.MultiLine  = 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)
				
				With objFSO.OpenTextFile(strFile, ForWriting)
					.Write strContent
					.Close
				End With
			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-адресом — не производится.
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:07, 03-07-2013 | #4


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


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

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


Простите, каюсь, забыл упомянуть, вместо ip ещё можно и нужно вводить домены типа myproxy.freeproxy.net или р72345.myproxy.freeproxy.net - сейчас не получается.
И не могли бы вы добавить в конце запуск файла при нажатии кнопки ok и просто завершение скрипта по нажатию кнопки отмена, без запуска .exe, если конечно возможно.

PS уточню, в форме ввода InputBox'a можно написать myproxy.freeproxy.net и он изменится в файле, но при следующем запуске скрипт не находит строку по указанному шаблону.
PSPS можно ещё каким то образом управлять кодировкой файла list.txt? наверное ANSI, совсем забыл про кириллические домены

Последний раз редактировалось ultrarare, 03-07-2013 в 09:06.


Отправлено: 08:26, 03-07-2013 | #5


Ветеран


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

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


Цитата ultrarare:
забыл упомянуть, вместо ip ещё можно и нужно вводить домены типа myproxy.freeproxy.net или р72345.myproxy.freeproxy.net »
Ясно.

Цитата ultrarare:
И не могли бы вы добавить в конце запуск файла при нажатии кнопки ok »
Какого файла?

Пусть будет «Блокнот»:
читать дальше »
Код: Выделить весь код
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 = "^(ProxyS=)(.*)$"
		.IgnoreCase = True
		.MultiLine  = 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)
				
				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


Цитата ultrarare:
можно ещё каким то образом управлять кодировкой файла list.txt? наверное ANSI, совсем забыл про кириллические домены »
Так и есть.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:29, 03-07-2013 | #6


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


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

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


Премного благодарен, всё работает

Отправлено: 09:38, 03-07-2013 | #7


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


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

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


Iska, не тут то было, в попыхах проверил, всё работает, сейчас пристальнее присмотрелся, выявил несколько проблем, не могли бы вы мне ещё немного помочь?
Можно ли явно указать кодировку ANSI выходному файлу list.txt? Даже не могу понять в какой кодировке он сохраняется.
Когда я первый раз запускал, так и оставил расширение .vbs, сейчас изменил на .whs (полагаю, что так нужно) при запуске отображается ошибка с сообщением "Сценарий не указан" я, что то не так делаю?

Отправлено: 11:36, 03-07-2013 | #8


Ветеран


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

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


Цитата ultrarare:
Можно ли явно указать кодировку ANSI выходному файлу list.txt? Даже не могу понять в какой кодировке он сохраняется. »
Можно. Но не нужно:

читать дальше »




Она и так будет ANSI по умолчанию — OpenTextFile Method:
Цитата:

format

Optional. One of three Tristate values used to indicate the format of the opened file (TristateTrue = -1 to open the file as Unicode, TristateFalse = 0 to open the file as ASCII, TristateUseDefault = -2 to open the file as the system default). If omitted, the file is opened as ASCII.


Цитата ultrarare:
Когда я первый раз запускал, так и оставил расширение .vbs »
Верно.

Цитата ultrarare:
сейчас изменил на .whs (полагаю, что так нужно) »
Не нужно. «*.wsh» — достаточно бесполезный файл описания сценария.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:57, 03-07-2013 | #9


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


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

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


Большое спасибо за объяснения

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



Компьютерный форум 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




 
Переход