расширенный анализ файла журнала для cmd

Мне нужно проанализировать файл журнала в cmd (с помощью команд find или findstr), чтобы получить определенные записи.

Пример файла журнала:

[2017-04-10 10:53:58.597] [info   ] [settings   ] [ 1052: 1012] paths.ini_store configuration is empty, settings ini store folder to asw::instup::GetDataDirectory.
[2017-04-10 10:53:58.597] [info   ] [crashguard ] [ 1052: 1012] CrashGuard global exception handler installed
[2017-04-10 10:53:58.738] [debug  ] [lim_base   ] [ 1052: 3560] Alpha's version:'1
[2017-04-10 10:53:58.738] [info   ] [lim_base   ] [ 1052: 3560] Alpha settings - enabled:'1'
[2017-04-10 10:54:35.118] [debug  ] [lim_av     ] [ 1052: 4960] ALPHA PROTO:
                                                                'walletKey: "XXXXX-YYYYY-ZZZZZZ"
                                                                '
[2017-04-10 10:54:35.196] [debug  ] [aswlog     ] [ 1052: 4524] c:\windows\system32\fundisc.dll
[2017-04-10 10:54:35.212] [info   ] [lim_av     ] [ 1052: 4960] IQS - response
[2017-04-10 10:54:35.227] [debug  ] [aswlog     ] [ 1052: 4524] c:\windows\system32\fvecerts.dll
[2017-04-10 10:54:35.227] [debug  ] [lim_burg   ] [ 1052: 4960] IqsInfo
[2017-04-10 10:54:35.227] [debug  ] [lim_burg   ] [ 1052: 4960] ALPHA PROTO:
                                                                'token: "ea0989e5-acdc-4cf6-ba1c-e9bdad98b7ce"
                                                                wallet_key: "XXXXX-YYYYY-ZZZZZZ"
                                                                data: SOME_DATA
                                                                success: true
                                                                '
[2017-04-10 10:56:05.986] [debug  ] [settings   ] [ 1052: 2444] Property 'avdef://config/Custody/Enabled' has no entry in defaults map.
[2017-04-10 10:56:06.018] [debug  ] [settings   ] [ 1052: 2444] Property 'avdef://config/Custody/Enabled' has no entry in defaults map.

То, что мне нужно иметь на выходе (консоль или файл), выглядит следующим образом:

  1. вся запись, содержащая строку «[lim» (это очень просто, но ..)
  2. часть, расположенная между "PROTO:" и началом следующей записи, начиная с [2017..

Итак, что касается приведенного выше примера, это должно дать мне:

[2017-04-10 10:53:58.738] [debug  ] [lim_base   ] [ 1052: 3560] Alpha's version:'1
[2017-04-10 10:53:58.738] [info   ] [lim_base   ] [ 1052: 3560] Alpha settings - enabled:'1'
[2017-04-10 10:54:35.118] [debug  ] [lim_av     ] [ 1052: 4960] ALPHA PROTO:
                                                                'walletKey: "XXXXX-YYYYY-ZZZZZZ"
                                                                '
[2017-04-10 10:54:35.212] [info   ] [lim_av     ] [ 1052: 4960] IQS - response
[2017-04-10 10:54:35.227] [debug  ] [lim_burg   ] [ 1052: 4960] IqsInfo
[2017-04-10 10:54:35.227] [debug  ] [lim_burg   ] [ 1052: 4960] ALPHA PROTO:
                                                                'token: "ea0989e5-acdc-4cf6-ba1c-e9bdad98b7ce"
                                                                wallet_key: "XXXXX-YYYYY-ZZZZZZ"
                                                                data: SOME_DATA
                                                                success: true
                                                                '

То, что я погуглил и настроил, выглядит следующим образом:

@echo off > newfile & setLocal enableDELAYedeXpansioN
set H=
set T=
for /f "tokens=1* delims=" %%a IN ('find /n /i "PROTO:" service.log') do (
  echo.%%a
  set H=%%a
  for /f "tokens=1* delims=" %%a in ('find /n /i "'" service.log') do (
    set T=%%a
    )
  for /f "tokens=1* delims= " %%a in ('find /n /v "[2017" service.log') do (
  if %%a gtr !H! if %%a lss !T! echo.%%b
  )
)

Но это не работает, как мне нужно, и я был бы признателен за вашу помощь. Благодарю вас!


person Petr Kolis    schedule 18.04.2017    source источник
comment
Что не работает в вашем скрипте, что именно происходит?   -  person aschipfl    schedule 18.04.2017


Ответы (1)


person    schedule
comment
У меня есть еще одна проблема с максимальной длиной строки, которая будет использоваться в качестве переменной во время поиска (установить /P line=). Когда строка превышает 1024 символа, происходит сбой. Есть ли способ, как я могу преодолеть это ограничение? - person Petr Kolis; 14.07.2017
comment
Я нашел способ, как на самом деле разделить строку на несколько строк, так что теперь в ней не более 1024 символов, и теперь все в порядке. - person Petr Kolis; 17.07.2017