Ping时间戳

时间:2014-07-23 09:04:39

标签: cmd timestamp ping

在Windows命令提示符cmd上,我使用ping -t to 10.21.11.81

Reply from 10.21.11.81: bytes=32 time=3889ms TTL=238
Reply from 10.21.11.81: bytes=32 time=3738ms TTL=238
Reply from 10.21.11.81: bytes=32 time=3379ms TTL=238

有没有可能获得这样的输出?

10:13:29.421875 Reply from 10.21.11.81: bytes=32 time=3889ms TTL=238
10:13:29.468750 Reply from 10.21.11.81: bytes=32 time=3738ms TTL=238
10:13:29.468751 Reply from 10.21.11.81: bytes=32 time=3379ms TTL=238

请注意,我只想通过CMD提供的命令来实现这一目标

16 个答案:

答案 0 :(得分:85)

@echo off
    ping -t localhost|find /v ""|cmd /q /v:on /c "for /l %%a in (0) do (set "data="&set /p "data="&if defined data echo(!time! !data!)" 

note :要在批处理文件中使用的代码。要从命令行使用,请将%%a替换为%a

启动ping,强制使用正确的行缓冲输出(find /v),并启动一个启用了延迟扩展的cmd进程,该进程将执行无限循环读取将回送到控制台的管道数据以当前时间为前缀。

2015-01-08 已修改: 在更快/更新的机器/操作系统版本中,以前的代码中存在同步问题,使set /p读取一行,而ping命令仍在写入,结果是行切割。

@echo off
    ping -t localhost|cmd /q /v /c "(pause&pause)>nul & for /l %%a in () do (set /p "data=" && echo(!time! !data!)&ping -n 2 localhost>nul"

子shell的开头包含两个aditional pause命令(只能使用一个命令,但当pause使用输入字符时,CRLF对被破坏,带有LF的行是readed)等待输入数据,并且包含ping -n 2 localhost以等待内循环中的每次读取一秒钟。结果是更稳定的行为和更少的CPU使用率。

注意:内部ping可以替换为pause,但每个readed行的第一个字符由pause使用,而不是由{{1}检索}

答案 1 :(得分:46)

WindowsPowershell:

选项1

ping.exe -t COMPUTERNAME|Foreach{"{0} - {1}" -f (Get-Date),$_}

选项2

Test-Connection -Count 9999 -ComputerName COMPUTERNAME | Format-Table @{Name='TimeStamp';Expression={Get-Date}},Address,ProtocolAddress,ResponseTime

答案 2 :(得分:35)

你可以这样做:

ping 10.0.0.1 | while read line; do echo `date` - $line; done

虽然它没有给出你最后点击^ C时通常得到的统计数据。

答案 3 :(得分:4)

在Windows上

您可以使用其他答案之一。

在Unix / Linux上

while :;do ping -n -w1 -W1 -c1 10.21.11.81| grep -E "rtt|100%"| sed -e "s/^/`date` /g"; sleep 1; done

或者作为〜/ .bashrc的函数pingt

pingt() {
  while :;do ping -n -w1 -W1 -c1 $1| grep -E "rtt|100%"| sed -e "s/^/`date` /g"; sleep 1; done
}

来源:https://stackoverflow.com/a/26666549/1069083

答案 4 :(得分:2)

试试这个:

使用以下内容创建批处理文件:

echo off

cd\

:start

echo %time% >> c:\somedirectory\pinghostname.txt

ping pinghostname >> c:\somedirectory\pinghostname.txt

goto start

您可以根据自己的要求为ping命令添加自己的选项。这并没有将时间戳与ping相同的行,但它仍然可以获得您需要的信息。

更好的方法是使用fping,到这里http://www.kwakkelflap.com/fping.html下载它。

答案 5 :(得分:2)

这可能会对某人有所帮助:[需要在Windows PowerShell中运行]

ping.exe -t 10.227.23.241 |Foreach{"{0} - {1}" -f (Get-Date),$_} >> Ping_IP.txt

-检查当前目录或用户主目录中的Ping_IP.txt文件。

上面的命令为您提供如下文件中的输出;

9/14/2018 8:58:48 AM - Pinging 10.227.23.241 with 32 bytes of data:
9/14/2018 8:58:48 AM - Reply from 10.227.23.241: bytes=32 time=29ms TTL=117
9/14/2018 8:58:49 AM - Reply from 10.227.23.241: bytes=32 time=29ms TTL=117
9/14/2018 8:58:50 AM - Reply from 10.227.23.241: bytes=32 time=28ms TTL=117
9/14/2018 8:58:51 AM - Reply from 10.227.23.241: bytes=32 time=27ms TTL=117
9/14/2018 8:58:52 AM - Reply from 10.227.23.241: bytes=32 time=28ms TTL=117
9/14/2018 8:58:53 AM - Reply from 10.227.23.241: bytes=32 time=27ms TTL=117
9/14/2018 8:58:54 AM - Reply from 10.227.23.241: bytes=32 time=28ms TTL=117

答案 6 :(得分:1)

试试这个:

  

ping -c2 -s16 sntdn | awk' {print NR" | " strftime("%Y-%m-%d_%H:%M:%S")" | " $ 0}'   一个VER QUE TE PARECE,OJALA Y TE SIRVA

答案 7 :(得分:1)

使用

ping -D 8.8.8.8

在手册页中

-D     Print timestamp (unix time + microseconds as in gettimeofday) before each line

输出

[1593014142.306704] 64 bytes from 8.8.8.8: icmp_seq=2 ttl=120 time=13.7 ms
[1593014143.307690] 64 bytes from 8.8.8.8: icmp_seq=3 ttl=120 time=13.8 ms
[1593014144.310229] 64 bytes from 8.8.8.8: icmp_seq=4 ttl=120 time=14.3 ms
[1593014145.311144] 64 bytes from 8.8.8.8: icmp_seq=5 ttl=120 time=14.2 ms
[1593014146.312641] 64 bytes from 8.8.8.8: icmp_seq=6 ttl=120 time=14.8 ms

答案 8 :(得分:0)

另一种powershell方法(我只想要失败)

$ping = new-object System.Net.NetworkInformation.Ping
$target="192.168.0.1"
Write-Host "$(Get-Date -format 's') Start ping to $target"
while($true){
    $reply = $ping.send($target)
    if ($reply.status -eq "Success"){
        # ignore success    
        Start-Sleep -Seconds 1
    }
    else{
        Write-Host "$(Get-Date -format 's') Destination unreachable" $target

    }
}

答案 9 :(得分:0)

我还需要这个来监控我的数据库镜像超时问题的网络问题。我使用命令代码如下:

ping -t Google.com|cmd /q /v /c "(pause&pause)>nul & for /l %a in () do (set /p "data=" && echo(!date! !time! !data!)&ping -n 2 Google.com>nul" >C:\pingtest.txt

您只需将Google.com修改为您的服务器名称即可。它对我来说很完美。并记得在你完成后停止这个。 pingtest.txt文件将增加每分钟4.5 KB(左右)。

感谢raymond.cc。 https://www.raymond.cc/blog/timestamp-ping-with-hrping/

答案 10 :(得分:0)

我认为我的代码符合每个人的需求:

ping -w 5000 -t -l 4000 -4 localhost|cmd /q /v /c "(pause&pause)>nul &for /l %a in () do (for /f "delims=*" %a in ('powershell get-date -format "{ddd dd-MMM-yyyy HH:mm:ss}"') do (set datax=%a) && set /p "data=" && echo([!datax!] - !data!)&ping -n 2 localhost>nul"

显示:

[Fri 09-Feb-2018 11:55:03] - Pinging localhost [127.0.0.1] with 4000 bytes of data:
[Fri 09-Feb-2018 11:55:05] - Reply from 127.0.0.1: bytes=4000 time<1ms TTL=128
[Fri 09-Feb-2018 11:55:08] - Reply from 127.0.0.1: bytes=4000 time<1ms TTL=128
[Fri 09-Feb-2018 11:55:11] - Reply from 127.0.0.1: bytes=4000 time<1ms TTL=128
[Fri 09-Feb-2018 11:55:13] - Reply from 127.0.0.1: bytes=4000 time<1ms TTL=128

note :要在命令行中使用的代码,并且必须在操作系统上预装PowerShell。

答案 11 :(得分:0)

增强了MC ND对Windows的回答 我需要一个在WinPE中运行的脚本,所以我做了以下内容:

@echo off
SET TARGET=192.168.1.1
IF "%~1" NEQ "" SET TARGET=%~1

ping -t %TARGET%|cmd /q /v /c "(pause&pause)>nul & for /l %%a in () do (set /p "data=" && echo(!time! !data!)&ping -n 2 localhost >nul"

这可以硬编码到特定的IP地址(在我的示例中为192.168.1.1)或采用传递的参数。 就像在MC ND的答案中一样,每1秒重复一次ping。

答案 12 :(得分:0)

这可能适合更高版本的Windows:

for /l %i in (1,0,2) do @echo|cmd /v:on /c set /p=!time! & ping -n 1 10.21.11.81 | findstr "Reply timed" && timeout /t 2 > nul:

答案 13 :(得分:0)

简单的?:

@echo off

set hostName=www.stackoverflow.com
set logfile=C:\Users\Dell\Desktop\PING_LOG\NetworkLog\Log_%hostName%.text
echo Network Loging Running %hostName%...
echo Ping Log %hostName% >>%logfile%

:Ping
for /f "tokens=* skip=2" %%A in ('ping %hostName% -n 1 ') do (
    echo %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %%A>>%logfile%
    timeout 1 >NUL
    GOTO Ping)

答案 14 :(得分:0)

除了在循环末尾添加附加的ping -n 2 localhost之外,您还可以在!data!之前添加字符R,因为唯一的可能性是Reply或Request。第一个字符来自pause>nul。因此,不要使用以下表达式:

ping localhost -t -l 4|cmd /q /v /c "(pause&pause)>nul & for /l %%a in () do (set /p data=&echo(!date! !time! !data!)&ping -n 2 localhost>nul"

您可以使用以下表达式:

ping localhost -t -l 4|cmd /q /v /c "(pause&pause)>nul & for /l %%a in () do (set /p data=&echo(!date! !time! R!data!)&pause>nul"

哪个会产生相同的输出,例如:

22:34:49.49 Reply from 172.217.4.46: bytes=4 time=14ms TTL=116
22:34:50.49 Reply from 172.217.4.46: bytes=4 time=14ms TTL=116
22:34:55.47 Request timed out.
22:34:56.49 Reply from 172.217.4.46: bytes=4 time=14ms TTL=116
22:34:57.49 Reply from 172.217.4.46: bytes=4 time=14ms TTL=116

答案 15 :(得分:0)

ping -t wwww.google.com|cmd /q /v /c “(pause&pause)>nul & for /l %a in () do (set /p “data=” && echo(!date!!)时间!!数据!)&ping -n 2 wwww.google.com>nul”