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

Ответить
 • Просмотры: 1
Аватара пользователя
Kainos

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

Сообщение Kainos »

Уважаемые форумчане!



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



Данные которые нужно найти:

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
Аватара пользователя
Iska

Re: VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO

Сообщение Iska »

Попробуйте так (на WSH):



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

Option Explicit
Dim strSourceFile
Dim strContent
Dim arrPatterns
Dim strPattern
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( _
		"MEIBillAccFWDownLoad (\d{2}/\d{2} \d{2}:\d{2}:\d{2} ).* (Acceptor application software version is \d+)", _
		"MEIBillAccFWDownLoad (\d{2}/\d{2} \d{2}:\d{2}:\d{2} ).* (Acceptor variant firmware version is \d+)", _
		"MEIBillAccFWDownLoad (\d{2}/\d{2} \d{2}:\d{2}:\d{2} ).* (Acceptor serial number is \d+)" _
	)
	With WScript.CreateObject("VBScript.RegExp")
		.IgnoreCase = True
		.Global     = True
		For Each strPattern In arrPatterns
			.Pattern = strPattern
			If .Test(strContent) Then
				With .Execute(strContent)
					With .Item(.Count - 1).Submatches
						WScript.Echo .Item(0) & .Item(1)
					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 & " "
	WScript.Quit 1
End If
WScript.Quit 0







Путь к исходному файлу указывается аргументом скрипта.
Аватара пользователя
Foreigner

Re: VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO

Сообщение Foreigner »

Цитата Foreigner:



… select-string '.+Acceptor.+is\s\d+'

$data[-3..-1] …
VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO




Это если быть уверенным, что строки с Acceptor будут строго по трое, не вперемежку.
Аватара пользователя
Iska

Re: VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO

Сообщение Iska »

Iska, Ну ТС сказал, что новые строки дописываются в конец лога, вряд ли они могут перемешаться с предыдущими записями.
Аватара пользователя
Foreigner

Re: VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO

Сообщение Foreigner »

Iska, Ну ТС сказал, что новые строки дописываются в конец лога, вряд ли они могут перемешаться с предыдущими записями.
Аватара пользователя
Kainos

Re: VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO

Сообщение Kainos »

Цитата Kainos:



Iska, скрипт очень классный но почему то выдает данные с начала файла а не с конца. Можно это исправить?
VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO




Kainos, добавьте «.Global = True» после «.IgnoreCase = True»:



Код:

Код: Выделить всё

		.IgnoreCase = True
		.Global     = True

Я поправил свой код выше.
Аватара пользователя
Iska

Re: VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO

Сообщение Iska »

Iska, Подскажите а можно добавить в текст вывода дополнительные слова (если это не сложно)?





Пример:

[spoiler]Было:

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[/spoiler]






Если для этого необходимо менять скрипт тогда обойдусь.
Аватара пользователя
Kainos

Re: VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO

Сообщение Kainos »

Iska, Подскажите а можно добавить в текст вывода дополнительные слова (если это не сложно)?





Пример:

[spoiler]Было:

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[/spoiler]






Если для этого необходимо менять скрипт тогда обойдусь.
Аватара пользователя
Iska

Re: VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO

Сообщение Iska »

Kainos, почему именно в середину шаблона поиска? Как Вы определяете место, куда надо вставлять текст?
Ответить

Вернуться в «Скриптовые языки администрирования Windows»