记录 ping 结果

Logging ping results

我正在跟踪多个电路。我通过从一台机器 ping 到一个遥远的 IP 地址来完成这项任务。我最近在该站点的帮助下添加了日志记录功能,但是日志增长太快并且它减慢了从文本文件中提取信息的数据库的速度。是否可以只记录某些值的值。从那些超时的值开始。 提前致谢

这是日志文件中生成的一小部分内容。我只想在会话显示超时时保留。

2015 年 1 月 15 日星期四 - 8:16:10.27 - 74.125.230.244 - rtt[284]

2015 年 1 月 15 日星期四 - 8:16:12.60 - 74.125.230.244 - rtt[154]

2015 年 1 月 15 日星期四 - 8:16:14.91 - 74.125.230.244 - rtt[154]

2015 年 1 月 15 日星期四 - 8:16:21.65 - 74.125.230.244 - rtt[超时]

2015 年 1 月 15 日星期四 - 8:16:23.74 - 74.125.230.244 - rtt[超时]

2015 年 1 月 15 日星期四 - 8:16:29.36 - 74.125.230.244 - rtt[超时]

2015 年 1 月 15 日星期四 - 8:16:31.86 - 74.125.230.244 - rtt[超时]

2015 年 1 月 15 日星期四 - 8:16:35.36 - 74.125.230.244 - rtt[超时]

2015 年 1 月 15 日星期四 - 8:16:40.36 - 74.125.230.244 - rtt[超时]

2015 年 1 月 15 日星期四 - 8:16:45.36 - 74.125.230.244 - rtt[超时]

2015 年 1 月 15 日星期四 - 8:16:48.36 - 74.125.230.244 - rtt[超时]

2015 年 1 月 15 日星期四 - 8:16:54.35 - 74.125.230.244 - rtt[超时]

2015 年 1 月 15 日星期四 - 8:16:56.80 - 74.125.230.244 - rtt[287]

2015 年 1 月 15 日星期四 - 8:16:59.18 - 74.125.230.244 - rtt[249]

@echo off
TITLE = Circuit 1
mode 40,20
setlocal enableextensions enabledelayedexpansion

rem Get address from command line
set "address=74.125.230.244"
if not defined address set "address=127.0.0.1"

rem Configure levels and colors 
rem The format is initialValue:color in value descending format
set "levels=9000:4F 178:E0 146:2F 0:E0"

rem infinite loop
for /l %%i in () do (
    rem retrieve information from ping command
    set "rtt=Timed Out"
    set "ttl=?"
    for /f "tokens=3,4 delims==^<" %%a in (
        'ping -n 1 "%address%" ^| find "TTL="'
    ) do for /f "tokens=1 delims=m" %%c in ("%%a") do (
        set /a "rtt=%%c"
        set "ttl=%%b"
    )

    rem retrieve color
    set "color="
    for %%z in (%levels%) do for /f "tokens=1,2 delims=:" %%a in ("%%z") do (
        if not defined color if !rtt! geq %%a set "color=%%b"
    )

    rem show information
    if defined color color !color!
    echo(!time! - %address% - rtt[!rtt!]

    rem save to log
    for /f "tokens=1-4 delims=.:-/ " %%a in ("!date!") do (
        >> "%%b-%%c-%%d_%%a_circuit1.txt" echo(!date! - !time! - %address% - rtt[!rtt!]
    )

    rem wait and repeat the process
    ping -n 3 localhost >nul 2>nul 
)

理论上,您需要做的就是将正在执行 echofor 门控到日志中:

....
echo(!time! - %address% - rtt[!rtt!]

rem save to log
if "!rtt!"=="Timed Out" for /f "tokens=1-4 delims=.:-/ " %%a in ("!date!") do (
    >> "%%b-%%c-%%d_%%a_circuit1.txt" echo(!date! - !time! - %address% - rtt[!rtt!]
)
....