Ping 加时间戳(Windows)

本文介绍了一个增强版的ping命令脚本sping.cmd,该脚本能够持续监测目标主机的连通性,并记录每次ping操作的时间戳及延迟。此外,还提供了一个使用VBScript实现的ping工具示例。

1

@echo off

 
if "%1"=="" goto :syntax
if "%1"=="/?" goto :syntax
if "%1"=="/" goto :syntax
if "%1"=="?" goto :syntax
if "%1"=="/help" goto :syntax
 
if "%2"=="" (set tt=2000) else set tt=%2
 
 
:disp
mode con:cols=100 lines=25
color f5
title *****ping命令加强脚本(含时间戳)*****
echo.
echo.                _____________sping.cmd  written by hitme_____________
echo.                                               
echo.        =============================================================================
echo.                *主机名*          *日期与时间*                *时延*          CTRL+C结束       
echo.        -----------------------------------------------------------------------------
(
echo.                _____________sping.cmd  written by hitme_____________
echo.                                               
echo.        ==============================================================================
echo.                *主机名*          *日期与时间*                *时延*          CTRL+C结束       
echo.        -----------------------------------------------------------------------------
) >log.txt
:loop
 
ping -n 2 %1 | find "Reply" >nul|| goto:error
setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=4 delims==" %%i in ('ping -n 3 -l 256 %1^|findstr "Average"') do (
                
                set dt=%date:~4% %time:~0,-3%
                set n=%%i
                set /a m = !n:~0,-3! / 5
                set x=
                for /l %%a in (1,1,!m!) do set x=!x!=
                if "!n:~0,-1!"=="  0ms" (
                                echo                %1        !dt!          ^<10ms  ^|=^>
                                echo                %1        !dt!          ^<10ms  ^|=^> >>log.txt ) else (
                                                                echo                %1        !dt!        !n:~0,-1!  ^|!x!=^>
                                                                echo                %1        !dt!        !n:~0,-1!  ^|!x!=^> >>log.txt)               
                
)
 
ping -n 1 -w %tt% 127.0.0.1 2>nul >nul
goto:loop
 
:error
echo.                %1        %date:~4% %time:~0,-3%        REPLY无........................
echo.                %1        %date:~4% %time:~0,-3%        REPLY无........................>>log.txt
ping -n 10 127.0.0.1 2>nul >nul
endlocal
goto:loop
 
:syntax
cls
echo.
echo.sping.cmd
echo.
echo.written by hitme    2005.08.19
echo.===============================================
echo.用法:
echo.        sping ip or hostname 时间间隔
echo.
echo.例如:
echo.        sping bbs.et8.net 10000(单位豪秒)
echo.        sping 192.168.1.1
echo.===============================================

pause

-----------------以上内容另存为sping.cmd


2

'如果想输出到文件中记录下来可以
'E:\>cscript ping.vbs www.sse.com.cn -t -l 1000 -w 5000>sseping.txt
Dim args, flag, unsuccOut
args=""
otherout=""
flag=0

If WScript.Arguments.count = 0 Then
WScript.Echo "Usage: cscript tping.vbs [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]"
WScript.Echo "                         [-s count] [[-j host-list] | [-k host-list]]"
WScript.Echo "                         [-r count] [-w timeout] destination-list"
wscript.quit
End if

For i=0 to WScript.Arguments.count - 1
args=args & " " & WScript.Arguments(i)
Next

Set shell = WScript.CreateObject("WScript.Shell")
Set re=New RegExp
re.Pattern="^Reply|^Request|^来自|^请求"

Set myping=shell.Exec("ping" & args)

while Not myping.StdOut.AtEndOfStream
   strLine=myping.StdOut.ReadLine()
'WScript.Echo  "原数据" & chr(9) & strLine
   r=re.Test(strLine)
   If r Then
WScript.Echo date & " "& time & chr(9) & strLine
flag=1
   Else
unsuccOut=unsuccOut & strLine
   End if
Wend

if flag = 0 then
WScript.Echo unsuccOut
end if

-------ping.vbs




### 如何在 Ping 命令中添时间戳 #### Windows 下实现方法 在 Windows 中可以通过 PowerShell 实现时间戳的连续 Ping 记录功能。具体命令如下: ```powershell ping.exe -t 网址或IP地址 | ForEach {"{0} - {1}" -f (Get-Date), $_} ``` 此命令会实时显示每次 Ping 的结果并附当前的时间戳[^1]。 如果希望将这些数据保存到文件中,只需在命令末尾追 `>` 和目标文件路径即可。例如: ```powershell ping.exe -t 网址或IP地址 | ForEach {"{0} - {1}" -f (Get-Date), $_} > D:\log.txt ``` 这将会把所有的 Ping 结果连同时间戳一起写入指定的文本文件中[^1]。 对于限定次数的情况,则可以结合 `-n` 参数设置发送的数据包数目。比如只执行三次 Ping 并记录日志: ```powershell ping.exe -n 3 网址或IP地址 | ForEach {"{0} - {1}" -f (Get-Date), $_} > E:\result.txt ``` 以上方式不仅简单易懂而且无需编写复杂的脚本程序就能完成任务[^2]。 #### Linux 下实现方法 相比之下,在类 Unix 系统如 Linux 上要达成同样的效果稍微复杂一点因为标准 ping 工具本身并不支持直接附时间信息的功能。但是我们能够利用 Shell 脚本来解决这个问题。以下是两种常见的做法之一种使用 while 循环读取每条输出再配合 date 函数打印日期时间前缀: ```bash ping www.example.com | while read pong; do echo "$(date): $pong"; done ``` 另一种则是借助 xargs 来处理每一行输入从而达到相似的目的: ```bash ping www.example.com | xargs -L 1 -I '{}' date '+%Y-%m-%d %H:%M:%S: {}' ``` 这两种方案都可以有效地为每一次成功的 ICMP 请求响应增精确的时间标记以便后续分析网络状况变化趋势等用途[^3]。 ### 总结 无论是哪种操作系统平台都有其特定的方法来增强基本网络诊断工具的能力使之更适合实际应用场景下的需求。通过适当组合现有资源和技术手段总能找到满足个性化定制要求的最佳实践途径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值