|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO |
|
|
VBS/WSH/JS - [решено] Поиск строки по части названия и вывод данных в ECHO
|
Пользователь Сообщения: 61 |
Профиль | Отправить PM | Цитировать
Уважаемые форумчане!
Прошу вашего содействия в написании скрипта который искал бы данные с конца документа (документ во вложении). Данные которые нужно найти: 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
|
Профиль | Отправить PM | Цитировать Попробуйте так (на WSH):
Скрытый текст
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 & " <Source file>" WScript.Quit 1 End If WScript.Quit 0 Путь к исходному файлу указывается аргументом скрипта. |
Последний раз редактировалось Iska, 16-04-2015 в 11:11. Причина: Добавлено «.Global = True» Отправлено: 16:07, 15-04-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1754
|
|
Отправлено: 17:35, 15-04-2015 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
|
|
Отправлено: 18:38, 15-04-2015 | #4 |
Ветеран Сообщения: 1754
|
Iska, Ну ТС сказал, что новые строки дописываются в конец лога, вряд ли они могут перемешаться с предыдущими записями.
|
|
Отправлено: 22:08, 15-04-2015 | #5 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать Iska, скрипт очень классный но почему то выдает данные с начала файла а не с конца. Можно это исправить?
Foreigner, Спасибо за скрипт, но к сожалению в той среде где он будет применяться нет PowerShell. |
Последний раз редактировалось Kainos, 16-04-2015 в 10:25. Отправлено: 08:53, 16-04-2015 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Kainos:
Я поправил свой код выше. |
|
Отправлено: 11:10, 16-04-2015 | #7 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать Iska, Подскажите а можно добавить в текст вывода дополнительные слова (если это не сложно)?
Пример:
Было:
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 Если для этого необходимо менять скрипт тогда обойдусь. |
Отправлено: 12:57, 16-04-2015 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Kainos, почему именно в середину шаблона поиска? Как Вы определяете место, куда надо вставлять текст?
|
Отправлено: 13:27, 16-04-2015 | #9 |
Пользователь Сообщения: 61
|
Профиль | Отправить PM | Цитировать Iska, Если проще в начале то меня устроит. Ну или в любом другом месте.
|
Последний раз редактировалось Kainos, 16-04-2015 в 13:57. Отправлено: 13:43, 16-04-2015 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|