VarseKc
08-11-2014, 18:06
Здравствуйте, уважаемые форумчане. Подскажите пожалуйста. Стоит такая задача. Написать батник, который бы читал построчно файл логов пинга в определенный промежуток по дате: считал количество строк в этом промежутке, в которых есть ответ и в которых нет ответа, а затем посчитал процент потерь.
Файл логов выглядит следующим образом:
Host: 192.168.10.12
2014-11-08 - 12:08:58 Reply from 192.168.10.12: bytes=32 time=5ms TTL=125
2014-11-08 - 12:08:59 Reply from 192.168.10.12: bytes=32 time=4ms TTL=125
2014-11-08 - 12:09:01 Reply from 192.168.10.12: bytes=32 time=9ms TTL=125
2014-11-08 - 12:09:10 Reply from 192.168.10.12: bytes=32 time=4ms TTL=125
2014-11-08 - 12:09:11 Reply from 192.168.10.12: bytes=32 time=6ms TTL=125
2014-11-08 - 12:09:12 Ping timed out.
2014-11-08 - 12:09:13 Ping timed out.
2014-11-08 - 12:09:14 Ping timed out.
2014-11-08 - 12:09:28 Ping timed out.
2014-11-08 - 12:09:33 Ping timed out.
2014-11-08 - 12:09:38 Ping timed out.
2014-11-08 - 12:09:43 Ping timed out.
2014-11-08 - 12:09:48 Ping timed out.
2014-11-08 - 12:09:53 Reply from 192.168.10.12: bytes=32 time=5ms TTL=125
2014-11-08 - 12:09:54 Reply from 192.168.10.12: bytes=32 time=35ms TTL=125
2014-11-08 - 12:09:55 Reply from 192.168.10.12: bytes=32 time=51ms TTL=125
Сейчас есть такой вариант
@(for /f %%i in ('^<"example.log" find /c /v ""') do @for /f %%j in ('^<"example.log" find /c "Reply from "') do @for /f %%k in ('set /a %%i-%%j-1') do @for /f %%l in ('set /a %%k*100/^(%%i-1^)') do @echo Received = %%j, Lost = %%k ^(%%l%% loss^).)& pause>nul& exit /b
Он считает все строки в которых прошел пинг и в которых пинг не прошел. И выводит процент потерь за весь файл. А нужно, чтобы за определенный промежуток по дате. За определенные строки.
Благодарю за помощь.
Файл логов выглядит следующим образом:
Host: 192.168.10.12
2014-11-08 - 12:08:58 Reply from 192.168.10.12: bytes=32 time=5ms TTL=125
2014-11-08 - 12:08:59 Reply from 192.168.10.12: bytes=32 time=4ms TTL=125
2014-11-08 - 12:09:01 Reply from 192.168.10.12: bytes=32 time=9ms TTL=125
2014-11-08 - 12:09:10 Reply from 192.168.10.12: bytes=32 time=4ms TTL=125
2014-11-08 - 12:09:11 Reply from 192.168.10.12: bytes=32 time=6ms TTL=125
2014-11-08 - 12:09:12 Ping timed out.
2014-11-08 - 12:09:13 Ping timed out.
2014-11-08 - 12:09:14 Ping timed out.
2014-11-08 - 12:09:28 Ping timed out.
2014-11-08 - 12:09:33 Ping timed out.
2014-11-08 - 12:09:38 Ping timed out.
2014-11-08 - 12:09:43 Ping timed out.
2014-11-08 - 12:09:48 Ping timed out.
2014-11-08 - 12:09:53 Reply from 192.168.10.12: bytes=32 time=5ms TTL=125
2014-11-08 - 12:09:54 Reply from 192.168.10.12: bytes=32 time=35ms TTL=125
2014-11-08 - 12:09:55 Reply from 192.168.10.12: bytes=32 time=51ms TTL=125
Сейчас есть такой вариант
@(for /f %%i in ('^<"example.log" find /c /v ""') do @for /f %%j in ('^<"example.log" find /c "Reply from "') do @for /f %%k in ('set /a %%i-%%j-1') do @for /f %%l in ('set /a %%k*100/^(%%i-1^)') do @echo Received = %%j, Lost = %%k ^(%%l%% loss^).)& pause>nul& exit /b
Он считает все строки в которых прошел пинг и в которых пинг не прошел. И выводит процент потерь за весь файл. А нужно, чтобы за определенный промежуток по дате. За определенные строки.
Благодарю за помощь.