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

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

Ответить
Настройки темы
VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO

Пользователь


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

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


Изменения
Автор: Kainos
Дата: 16-04-2015
Уважаемые форумчане!

Прошу вашего содействия в написании скрипта который искал бы данные с конца документа (документ во вложении).

Данные которые нужно найти:
MEIBillAccFWDownLoad 04/15 10:51:30 7,222,765 0AFC> Acceptor application software version is 286170390
MEIBillAccFWDownLoad 04/15 10:51:30 7,222,906 0AFC> Acceptor variant firmware version is 491908270
MEIBillAccFWDownLoad 04/15 10:51:30 7,223,078 0AFC> Acceptor serial number is 02294401340

Подчеркнуты статичные данные.

Принцип работы следующий:
1. Найти с конца документа эти 3 строки (их может быть больше, но нам нужны самые свежие которые располагаются в конце лога).
2. Вывести на экран следующую информацию:

04/15 10:51:30 Acceptor application software version is 286170390
04/15 10:51:30 Acceptor variant firmware version is 491908270
04/15 10:51:30 Acceptor serial number is 02294401340

Отправлено: 13:03, 15-04-2015

 

Ветеран


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

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


Kainos, Вы меня не поняли. Озвучьте конкретику.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:34, 16-04-2015 | #11



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

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


Пользователь


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

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


Iska, Текст который я вставляю просто статичный его нет в логе и для него нет особых условий, просто требуется что бы в этих строках было по несколько слов которых нет в оригинальном логе. Для каждой строки свой текст..

Отправлено: 14:37, 16-04-2015 | #12


Ветеран


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

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


Kainos, как прикажете мне определять «любое другое место» в строке? По какому принципу? Далее — зачем лог убрали, на чём проверять теперь?

Не проверялось:
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strSourceFile

Dim strContent
Dim arrPatterns
Dim arrPattern


If WScript.Arguments.Count = 1 Then
	strSourceFile = WScript.Arguments.Item(0)
	
	With WScript.CreateObject("Scripting.FileSystemObject")
		If .FileExists(strSourceFile) Then
			With .OpenTextFile(strSourceFile)
				strContent = .ReadAll()
				.Close
			End With
		Else
			WScript.Echo "Can't find source file [" & strSourceFile & "]."
			WScript.Quit 2
		End If
	End With
	
	arrPatterns = Array( _
		Array( _
			"MEIBillAccFWDownLoad (\d{2}/\d{2} \d{2}:\d{2}:\d{2} ).* (Acceptor application software version is \d+)", _
			"software version", _
			"software $$$ version", _
			"(Текст1)" _
		), _
		Array( _
			"MEIBillAccFWDownLoad (\d{2}/\d{2} \d{2}:\d{2}:\d{2} ).* (Acceptor variant firmware version is \d+)", _
			"firmware version", _
			"firmware $$$ version", _
			"(Текст2)" _
		), _
		Array( _
			"MEIBillAccFWDownLoad (\d{2}/\d{2} \d{2}:\d{2}:\d{2} ).* (Acceptor serial number is \d+)", _
			"number is", _
			"number $$$ is", _
			"(Текст3)" _
		)
	)
	
	With WScript.CreateObject("VBScript.RegExp")
		.IgnoreCase = True
		.Global     = True
		
		For Each arrPattern In arrPatterns
			.Pattern = arrPattern(0)
			
			If .Test(strContent) Then
				With .Execute(strContent)
					With .Item(.Count - 1).Submatches
						WScript.Echo Replace(Replace(.Item(0) & .Item(1), arrPattern(1), arrPattern(2)), "$$$", arrPattern(3))
					End With
				End With
			Else
				WScript.Echo "Can't find pattern [" & .Pattern & "] in source file [" & strSourceFile & "]."
			End If
		Next
	End With
Else
	WScript.Echo "Usage: cscript.exe //nologo " & WScript.ScriptName & " <Source file>"
	WScript.Quit 1
End If

WScript.Quit 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:15, 16-04-2015 | #13


Ветеран


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

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


Цитата Kainos:
Подскажите а можно добавить в текст вывода дополнительные слова (если это не сложно)?
Пример:
Было:
04/15 10:51:30 Acceptor application software version is 286170390
04/15 10:51:30 Acceptor variant firmware version is 491908270
04/15 10:51:30 Acceptor serial number is 02294401340
Стало:
04/15 10:51:30 Acceptor application software (Текст1) version is 286170390
04/15 10:51:30 Acceptor variant firmware (Текст2) version is 491908270
04/15 10:51:30 Acceptor serial number (Текст3) is 02294401340 »


Немного чёрной и белой магии, и Ваша задача решается с помощью такого красивейшего и оригинальнейшего кода пакетного файла:

Код: Выделить весь код
@<"meibillaccfwdownload_093013.log" (
for %%i in (
 "Acceptor application software (Text 1) version is"
 "Acceptor variant firmware (Text 2) version is"
 "Acceptor serial number (Text 3) is"
 ) do @(
 for /f "delims=(" %%j in (%%i) do @(
  for /f "tokens=2,3,5*" %%k in ('find "%%j"') do @(
   for %%o in (%%n) do @set %%~i=%%k %%l %%~i %%o
  )
 )
 call echo %%%%~i%%
)
)
@pause>nul
.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:54, 16-04-2015 | #14


Ветеран


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

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


Цитата Georgio:
Немного чёрной и белой магии, »
«Д'Артаньян чувствовал, что тупеет» .

Отправлено: 22:21, 16-04-2015 | #15



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Поиск строки по слову и добавление новой строки после найденой. Mikhael2011 Скриптовые языки администрирования Windows 17 16-03-2017 03:37
VBS/WSH/JS - поиск слова в тексте и вывод части текста после искомого слова sergey23031978 Скриптовые языки администрирования Windows 9 18-02-2015 16:54
VBS/WSH/JS - [решено] Поиск строки по маске в txt файле и замена всей строки из InputBox ultrarare Скриптовые языки администрирования Windows 11 03-07-2013 14:37
CMD/BAT - Выборка файлов по части названия скуби_ДУ Скриптовые языки администрирования Windows 7 03-08-2011 10:35




 
Переход