标题: [文本处理] [已解决]批处理怎样只提取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 成功的结果:- @echo off&setlocal enabledelayedexpansion
- (for /f "skip=8 delims=" %%a in ('ping www.a.shifen.com 2^>nul') do (
- set a=%%a
- if /i not "!a:~0,1!"=="a" echo;!a!
- ))>"文本.txt"
复制代码
作者: locoman 时间: 2011-1-22 02:37
十分感谢版主深夜都在为我们服务!!!
但是,保存的TXT文件中内容为空,什么也没有。
敬请版主再检查一下。
作者: andyrave 时间: 2011-1-22 07:56
- @echo off & setlocal enableDelayedExpansion
- rem Ping Tool for En Windows OS
- 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"
- For /f "delims=*" %%i IN ('Call echo %Desktop%') do set Desktop=%%i
- set ip=
- set /p ip=Input WebSit Addres:
- ping %ip% >%Desktop%\a.txt
- findstr /b /i /c:"Ping statistics" /c:" Packets:" /c:" Minimum" %Desktop%\a.txt>%Desktop%\b.txt
- set file=%Desktop%\b.txt
- set "file=%file:"=%"
- for %%i in ("%file%") do set file=%%~fi
- set replaced=
- set all=
- for /f "delims=" %%i in ('type "%file%"') do (
- set str=%%i
- set "str=!str:%replaced%=%all%!"
- echo !str!>>%Desktop%\IP.txt
- )
- DEL /F /Q %Desktop%\a.txt
- DEL /F /Q %Desktop%\b.txt
- start %Desktop%\IP.txt
- 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
百思不得其解,这段怎么会出错:- for /f "tokens=8,9,10,11 delims=() " %%a in ('ping localhost') do echo %%a @ %%b @ %%c @ %%d
- pause
复制代码
运行后的回显(我擦,居然连@都掉了一个):
@ @ @
Lost @ = @ 0 @ 0%
@ @ s
请按任意键继续. . .
作者: dht740411 时间: 2011-3-21 17:42
好东西谢谢LZ
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |