2015-04-01 152 views
0

我写了一个bat文件,它采用我们所有商店的IP地址并对它们进行ping处理。我想格式化结果,以便它只返回时间响应。从批处理文件ping命令的格式结果

目前我使用的是这样的: ping -n 1 xx.xxx.xxx.xx | FIND "TTL=" >>output.txt

这给了我只有一个回送请求的响应,这是我想要的。我只是想摆脱粗体文本。从xx.xxx.xxx.xx 回复:字节= 32时间= 22毫秒TTL = 57

回答

0

您可以通过for循环和使用空间和=标志作为分隔符运行结果只提取时间。

for /F "tokens=7 delims==< " %%A in ('ping -n 1 xx.xxx.xxx.xx ^| find "TTL"') do (
    echo %%A>>output.txt 
) 
+0

可能会失败,例如, 'ping -4 localhost'返回'time <1ms'。事实上,我无法模拟极端缓慢的反应,谁知道那种情况下的输出?我会使用'for/F'标记= 5“'然后删除'time'字 – JosefZ 2015-04-01 20:56:04

+0

我已经添加了'<'作为分隔符,只要ping不超时(例如'ping 1.1。 1.1'),它应该解决。 – SomethingDark 2015-04-01 21:31:39

+0

如果主机无法访问,您可以在ping选项中添加一个“-w 200”以缩短延迟。要使其与多个主机一起工作,请将其封装在所有参数的for循环中:'for %% H in(%*)do(for/F ... ping %% H ...)' – user1016274 2015-04-02 08:50:42