Board logo

标题: [文本处理] [已解决]批处理怎样只提取Ping的部分结果文本保存? [打印本页]

作者: locoman    时间: 2011-1-21 23:44     标题: [已解决]批处理怎样只提取Ping的部分结果文本保存?

一般的Ping命令都会出现很多行的结果回应,但我对其结果回应只需要其中主要的几项关键内容保存即可,请教高手帮助指导,谢谢!
比如ping百度的常规结果回应:

Pinging www.a.shifen.com [119.75.217.56] with 32 bytes of data:

Reply from 119.75.217.56: bytes=32 time=89ms TTL=54
Reply from 119.75.217.56: bytes=32 time=91ms TTL=54
Reply from 119.75.217.56: bytes=32 time=90ms TTL=54
Reply from 119.75.217.56: bytes=32 time=88ms TTL=54

Ping statistics for 119.75.217.56:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 88ms, Maximum = 91ms, Average = 89ms

但我只需将以下几项关键结果值保存到文本中即可,其他的都不需要保存:
Ping statistics for 119.75.217.56:
Sent = 4, Received = 4, Lost = 0 (0% loss),
Minimum = 88ms, Maximum = 91ms, Average = 89ms

拜托了!!

[ 本帖最后由 locoman 于 2011-2-13 00:01 编辑 ]
作者: hanyeguxing    时间: 2011-1-22 00:46

如果只保存成功 ping 成功的结果:
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "skip=8 delims=" %%a in ('ping www.a.shifen.com 2^>nul') do (
  3. set a=%%a
  4. if /i not "!a:~0,1!"=="a" echo;!a!
  5. ))>"文本.txt"
复制代码

作者: locoman    时间: 2011-1-22 02:37

十分感谢版主深夜都在为我们服务!!!
但是,保存的TXT文件中内容为空,什么也没有。
敬请版主再检查一下。
作者: andyrave    时间: 2011-1-22 07:56

  1. @echo off & setlocal enableDelayedExpansion
  2. rem Ping Tool for En Windows OS
  3. For /f "tokens=2*" %%a IN ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop') DO Set "Desktop=%%b"
  4. For /f "delims=*" %%i IN ('Call echo %Desktop%') do set Desktop=%%i
  5. set ip=
  6. set /p ip=Input WebSit Addres:
  7. ping %ip% >%Desktop%\a.txt
  8. findstr /b /i /c:"Ping statistics" /c:"    Packets:" /c:"    Minimum" %Desktop%\a.txt>%Desktop%\b.txt
  9. set file=%Desktop%\b.txt
  10. set "file=%file:"=%"
  11. for %%i in ("%file%") do set file=%%~fi
  12. set replaced=   
  13. set all=
  14. for /f "delims=" %%i in ('type "%file%"') do (
  15. set str=%%i
  16. set "str=!str:%replaced%=%all%!"
  17. echo !str!>>%Desktop%\IP.txt
  18. )
  19. DEL /F /Q %Desktop%\a.txt
  20. DEL /F /Q %Desktop%\b.txt
  21. start %Desktop%\IP.txt
  22. EXIT
复制代码

[ 本帖最后由 andyrave 于 2011-1-22 08:27 编辑 ]
作者: icerain    时间: 2011-1-22 12:09

楼上的代码似乎还是有点问题
作者: hanyeguxing    时间: 2011-1-22 16:03     标题: 回复 3楼 的帖子

实际测试没有发现有问题
作者: locoman    时间: 2011-1-22 16:17

原帖由 hanyeguxing 于 2011-1-22 16:03 发表
实际测试没有发现有问题


老大,可能批处理的东东在不同环境中的通用性和可靠性还是很差的,我在多台WIN XP SP3的机器上测试了您的代码,都是只生成了TXT文件,可该TXT文件中的内容都是空空如也。

我是将您的代码复制到记事本中,保存类型选择的所有文件,扩展名是BAT,这个操作应该是对的吧。

谢谢您及各位热心人!!4楼热心人的代码也不能执行下去,输入IP地址后就一直停住不动了。

请问,您是在什么环境中测试的?

[ 本帖最后由 locoman 于 2011-1-22 16:32 编辑 ]
作者: hanyeguxing    时间: 2011-1-22 16:27

批处理的文件名是什么?
作者: liion631818    时间: 2011-1-22 16:33

由于skip=8的限制, 你ping出来的结果跟你给出的文本信息是一致的话,那2楼的代码是对的。
作者: locoman    时间: 2011-1-22 20:55

原帖由 hanyeguxing 于 2011-1-22 16:27 发表
批处理的文件名是什么?


上帝啊!没有见过这样的好版主,硬是一定要把别人的问题解决到底!!

哈哈,您这个提醒是致命的!!之前我只注意了扩展名,没有考虑文件名,只想到我在输入命令时是将文件全名输入了的,结果还是有影响,惭愧!我取的文件名是ping.bat。

现在改成其他命名就可以了!

版主提供的代码是对的!!

用兔手势拜谢了!

另外,发现一个现象:不能将批处理文件放在桌面上点击运行,这样,批处理是执行不下去的。放在盘符中去,就可以的。

[ 本帖最后由 locoman 于 2011-1-22 21:04 编辑 ]
作者: CrLf    时间: 2011-2-13 01:17

百思不得其解,这段怎么会出错:
  1. for /f "tokens=8,9,10,11 delims=() " %%a in ('ping localhost') do echo %%a @ %%b @ %%c @ %%d
  2. pause
复制代码
运行后的回显(我擦,居然连@都掉了一个):
@  @  @
Lost @ = @ 0 @ 0%
@  @ s
请按任意键继续. . .
作者: dht740411    时间: 2011-3-21 17:42

好东西谢谢LZ




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