[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已解决]批处理for /f怎样获取ping结果中的时间值?

本帖最后由 missll 于 2011-4-27 00:17 编辑

Pinging 111.92.232.155 with 32 bytes of data:

Reply from 111.92.232.155: bytes=32 time=80ms TTL=118

Ping statistics for 111.92.232.155:
     Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
     Minimum = 80ms, Maximum = 80ms, Average = 80ms

Pinging 222.126.39.91 with 32 bytes of data:

Reply from 222.126.39.91: bytes=32 time=174ms TTL=112

Ping statistics for 222.126.39.91:
     Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
     Minimum = 174ms, Maximum = 174ms, Average = 174ms

Pinging 114.142.154.121 with 32 bytes of data:

Reply from 114.142.154.121: bytes=32 time=67ms TTL=115

Ping statistics for 114.142.154.121:
     Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
     Minimum = 67ms, Maximum = 67ms, Average = 67ms
________________________________________________________________
4行 Reply from 111.92.232.155: bytes=32 time=80ms TTL=118
13行 Reply from 222.126.39.91: bytes=32 time=174ms TTL=112
22行 Reply from 114.142.154.121: bytes=32 time=67ms TTL=115

我想取文本中的 以上这3行 "time=" 之后   "ms" 之前的值 并且赋予3个变量
  1. @echo off
  2. for /f "skip=3 delims=? tokens=?" %%i in (ip.txt) do (
  3. set %%i
  4. set %%j
  5. set %%k )
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
花开不问月,不语笑红尘.

本帖最后由 hanyeguxing 于 2011-4-22 21:39 编辑
  1. @echo off
  2. for /f "tokens=1,3,8 delims=m:=<> " %%a in (ip.txt) do if /i "%%a"=="Reply" set ip_%%b=%%c
  3. set ip_
  4. pause
复制代码
  1. @echo off&setlocal enableDelayedExpansion
  2. for /f "tokens=1,8 delims=m:=<> " %%a in (ip.txt) do if /i "%%a"=="Reply" set/a a+=1&set ip_!a!=%%c
  3. for /l %%a in (1 1 %a%) do echo !ip_%%a!
  4. pause
复制代码
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1-5" %%a in (ip.txt) do (
  4. if /i "%%a"=="Reply" (
  5. set t=%%e
  6. set t=!t:~5,-2!
  7. echo !t!))
  8. pause
复制代码

TOP

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 applba 于 2011-4-25 11:56 编辑

我来个简单的
可以直接调用:getip www.qq.com
如果没有参数,默认是www.163.com
  1. @echo off
  2. set sites=%1
  3. if "%sites%"=="" set sites=www.163.com
  4. ping %sites% >ping.txt
  5. for /f "tokens=3" %%i  in ('find /i "pinging" ping.txt') do set b=%%i
  6. echo %b:~1,-1%
  7. pause
复制代码

TOP

本帖最后由 missll 于 2011-4-25 05:55 编辑

非常感谢你的回帖
揣摩了很久我才弄明白了1 3 8 节段. 但是我还是不明白[code]"delims=m:=<> "  这里的<> 是什么意思  ,难道是论坛转换的问题?

Reply from 123.132.254.15: bytes=32 time=22ms TTL=58

我的理解是以上节段 和返回的数值是一样的.

第2段代码我还是没看懂...
另外想问  例如 set XXXXXX  这样的变量如何删除掉?  它不象set aa=bb   一样 我可以使用 set aa=  删除掉.



@echo off
for /f "tokens=1,3,8 delims=m:= " %%a in (ip.txt) do if /i "%%a"=="Reply" set ip_%%b=%%c
set ip_
pause@echo off&setlocal enableDelayedExpansion
for /f "tokens=1,8 delims=m:= " %%a in (ip ...
hanyeguxing 发表于 2011-4-22 21:33
花开不问月,不语笑红尘.

TOP

非常感谢你的回帖
让我从中学习到 set 取值中的 语法, 查看SET /? 中也有例子, 谢谢。
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1-5" %%a in (ip.txt) do (
if /i "%%a"=="Reply" (
set t=%%e
set t=!t:~5,-2!
echo !t!))
pause
escortmnm 发表于 2011-4-22 21:38
花开不问月,不语笑红尘.

TOP

非常感谢给予的帮助 我已仔细查看此链接
1# missll


这里有个实例:
http://bbs.bathome.net/viewthread.php?tid=4193#pid26844
Batcher 发表于 2011-4-22 23:10
花开不问月,不语笑红尘.

TOP

非常感谢你的回帖  但是这不是我要的结果,因为它只输出了 IP地址 原因是find /i "pinging"这行中并没有TIMES的值.
我来个简单的:
@echo off
set sites=%1
if "%sites%"=="" set sites=www.163.com
ping %sites% >ping.txt
find /i "pinging" ping2.txt
for /f "tokens=3" %%i  in (ping2.txt) do set b=%%i
echo %b:~1,-1% ...
applba 发表于 2011-4-24 10:05
花开不问月,不语笑红尘.

TOP

本帖最后由 hanyeguxing 于 2011-4-25 07:30 编辑

Reply from 222.126.39.91: bytes=32 time=174ms TTL=112
Reply是第1段,用来区分行,fro是第2段,222.126.39.91是第3段,bytes是第4段,32是第5段,ti是第6段,e是第7段,174就是第8段
time=174ms,把174和ms分隔开,方法有很多,使用字母m分隔就是其中之一。174前的符号可能为=或<或>,所以均要分隔
空格是用来分隔Reply的
set ip_不是用来设置,而是用来显示的,显示所有ip_开头变量的变量
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表