|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Анализ лог файла с изменением текста. |
|
CMD/BAT - [решено] Анализ лог файла с изменением текста.
|
Пользователь Сообщения: 61 |
Профиль | Отправить PM | Цитировать
Уважаемые форумчане.
Обращаюсь к Вам с очередной просьбой. Нужен bat'ник выполняющий следующие действия. Ищет в текстовом файле строки со следующим текстом: Return Code: 1006 Return Code: 3 Return Code: 4003 ... (может быть больше) Дальше в зависимости от найденного им текста он делает один из двух выходов: 1. Если нашел Return Code: 4003 Return Code: 3 Return Code: 1006, то правим найденный текст (например: с Return Code: 4003 на Return C: 4003 (смысл в том что лог файл не удаляется и что бы повторно не нарваться на один и тот же код его нужно исправить так что бы он не подошел по параметрам поиска)) и идем goto:work 2. если нет то goto:eof P.S. К сожалению нужен именно CMD/BAT |
|
Отправлено: 16:09, 17-04-2015 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Kainos:
|
|
Отправлено: 16:25, 17-04-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Снова немного "поколдовав", "соригинальничал в квадрате":
@echo off set "log=meibillaccfwdownload.log" set "codes=3, 1006, 4003" setlocal if not exist "%log%" ( echo "%log%" is not found.& pause>nul& endlocal& exit/b 1 ) else ( for %%i in (%codes%) do call set x=%%x%% /c:"Return Code: %%i$"& set %%i=true >nul cmd/v/c findstr/ir!x! "%log%"|| (endlocal& exit/b 2) for /f %%i in ('^<"%log%" find/c /v ""') do @<"%log%">.tmp ( for /l %%j in (1 1 %%i) do @set y=& set/p y=& if defined y ( ( for /f "tokens=8,9" %%k in ('cmd/v/c echo.!y!') do @if defined %%l ( if "%%k" equ "Code:" ( cmd/v/c echo !y: Code: = C: ! ) else cmd/v/c echo !y! ) else cmd/v/c echo !y! )|| cmd/v/c echo.!y! ) else echo. ) ) type .tmp>"%log%"& del .tmp endlocal :work echo :work& echo The label was achieved.& pause>nul . Если ориентироваться только на прикреплённый LOG-файл, то код можно бы было сократить вдвое, но я почему-то подозреваю, что содержимое приведённого файла может не полностью соответсвовать реальному содержимому, и поэтому учёл все возможные ситуации, кроме наличия другой кодировки и некоторых маловероятных случаев. Кстати, если бы не условие "если не найдено, то выходить, совсем ничего не делая", можно было бы даже не генерировать шаблоны поиска как таковые и не применять команду "FINDSTR", и в случае отсутстствия нужных кодов возврата файл бы просто переписывался без изменений, после чего осуществлялся бы выход. |
Отправлено: 01:49, 18-04-2015 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Преобразование вывода лог файла | egoryich | Скриптовые языки администрирования Windows | 8 | 15-05-2014 13:07 | |
CMD/BAT - Перемещение файла и лог-файл | feAre | Скриптовые языки администрирования Windows | 4 | 27-11-2012 06:40 | |
Log/Monitoring - Подскажите программу для анализ интерент соединения с записью в лог ? | wiznv | Сетевые технологии | 1 | 18-10-2012 20:24 | |
Интернет - Слежение за изменением файла | mikel | Программное обеспечение Windows | 2 | 29-05-2010 14:04 | |
Обработка лог-файла на C++ | Guest | Программирование и базы данных | 17 | 23-03-2004 01:11 |
|