Board logo

标题: [文本处理] 在win7下如何把ping结果的某个数值输出到另外一个文本里? [打印本页]

作者: sgzg737    时间: 2012-3-7 13:10     标题: 在win7下如何把ping结果的某个数值输出到另外一个文本里?

本帖最后由 sgzg737 于 2012-3-7 13:28 编辑

如题:
执行一个ping结果,然后把结果输出.
例:ping结果:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 72ms,最长 = 73ms,平均 = 72ms
把最短值72ms ,最长值73ms, 平均值 72ms, 丢失 0% 输出到另外一个文本文件里.其它文本内容不要
作者: find    时间: 2012-3-7 13:13

我的Win7里面ping结果是英文版的,把你自己的完整的ping结果发上来看看。
作者: sgzg737    时间: 2012-3-7 13:30

正在 Ping polaris.sina.com.cn [202.108.33.60] 具有 32 字节的数据:
来自 202.108.33.60 的回复: 字节=32 时间=58ms TTL=240
来自 202.108.33.60 的回复: 字节=32 时间=56ms TTL=240
来自 202.108.33.60 的回复: 字节=32 时间=56ms TTL=240
来自 202.108.33.60 的回复: 字节=32 时间=56ms TTL=240

202.108.33.60 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 56ms,最长 = 58ms,平均 = 56ms
作者: sgzg737    时间: 2012-3-7 13:35

输出只要求数值就可以,如:56ms,58ms,0%
作者: terse    时间: 2012-3-7 14:39

测试环境 xp
  1. @echo off
  2. for /f "tokens=2,4,8 delims==,, " %%i in (pin.txt) do (
  3. set str1=%%i %%j
  4. if "%%k" neq "" set str2=%%k
  5. )
  6. echo %str1% %str2:*(=%
  7. pause
复制代码

作者: ivor    时间: 2012-3-7 15:24

  1. for /f "tokens=2,4,6 skip=10 delims==,," %%1 in ('ping 8.8.8.8') do (echo %%1,%%2,%%3)
复制代码

作者: gmwd18    时间: 2012-3-7 17:23

lz,这个你还要进行判断,能ping通的会有延迟时间,ping不通的是不会有的,ping不通有两种情况,请求超时和目的地不可达,即request timeout ,destination unreachable
作者: apang    时间: 2012-3-7 20:53

  1. @echo off&setlocal enabledelayedexpansion
  2. set n=1
  3. for /f "tokens=1-9 delims==,() " %%a in ('ping polaris.sina.com.cn^|findstr /i "丢失 最短"') do (
  4.     if not "!n!"=="2" (set los=%%h&set/a n+=1) else set min=%%b&set max=%%d&set ave=%%f
  5. )
  6. (if defined min (echo !min! !max! !ave! !los!) else echo !los!)>res.txt
复制代码

作者: sgzg737    时间: 2012-3-7 23:56

非常感谢大家阿,学到不少东西.
作者: sgzg737    时间: 2012-3-7 23:59

7楼的朋友是对的,当ping批量ip的时候有出现ping不同的情况,那就只有丢失那行,没有最长最短那部分了.

正在 Ping 220.2.2.2 具有 32 字节的数据:
请求超时。
请求超时。
请求超时。
请求超时。

220.2.2.2 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 0,丢失 = 4 (100% 丢失),
作者: terse    时间: 2012-3-8 01:17

回复 10# sgzg737
变更下怎么样
  1. @echo off
  2. set str1=&set str2=
  3. for /f "tokens=2,4,8 delims==,, " %%i in ('ping baidu.com^|findstr /ir "=" ') do (
  4. if "%%k" neq "" (set str2=%%k)else set str1=%%i %%j
  5. )
  6. if defined str1 (echo %str1% %str2:*(=%)else echo %str2:*(=%
  7. pause
复制代码

作者: Hello123World    时间: 2012-4-11 14:58

  1. @echo off
  2. ping www.baidu.com|find "最短">1.txt
  3. start 1.txt
  4. pause
复制代码

作者: evenar    时间: 2012-4-11 18:06

楼上经典!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2