VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO
-
Kainos
VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO
Уважаемые форумчане!
Прошу вашего содействия в написании скрипта который искал бы данные с конца документа (документ во вложении).
Данные которые нужно найти:
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
Прошу вашего содействия в написании скрипта который искал бы данные с конца документа (документ во вложении).
Данные которые нужно найти:
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
Попробуйте так (на WSH):
Скрытый текст
[spoiler]Код: [/spoiler]
Путь к исходному файлу указывается аргументом скрипта.
Скрытый текст
[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Путь к исходному файлу указывается аргументом скрипта.
-
Iska
Re: VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO
Kainos, Вы меня не поняли. Озвучьте конкретику.
-
Foreigner
Re: VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO
Цитата Foreigner:
… select-string '.+Acceptor.+is\s\d+'
$data[-3..-1] …
Это если быть уверенным, что строки с Acceptor будут строго по трое, не вперемежку.
… select-string '.+Acceptor.+is\s\d+'
$data[-3..-1] …
VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO
Это если быть уверенным, что строки с Acceptor будут строго по трое, не вперемежку.
-
Iska
Re: VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO
Iska, Ну ТС сказал, что новые строки дописываются в конец лога, вряд ли они могут перемешаться с предыдущими записями.
-
Foreigner
Re: VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO
Iska, Ну ТС сказал, что новые строки дописываются в конец лога, вряд ли они могут перемешаться с предыдущими записями.
-
Kainos
Re: VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO
Цитата Kainos:
Iska, скрипт очень классный но почему то выдает данные с начала файла а не с конца. Можно это исправить?
Kainos, добавьте «.Global = True» после «.IgnoreCase = True»:
Код:
Я поправил свой код выше.
Iska, скрипт очень классный но почему то выдает данные с начала файла а не с конца. Можно это исправить?
VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO
Kainos, добавьте «.Global = True» после «.IgnoreCase = True»:
Код:
Код: Выделить всё
.IgnoreCase = True
.Global = TrueЯ поправил свой код выше.
-
Iska
Re: VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO
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]
Если для этого необходимо менять скрипт тогда обойдусь.
Пример:
[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
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]
Если для этого необходимо менять скрипт тогда обойдусь.
Пример:
[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
Kainos, почему именно в середину шаблона поиска? Как Вы определяете место, куда надо вставлять текст?