找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28817|回复: 2

[文本处理] 批处理如何每5分钟批量ping多个ip 并将ave值放入txt文件?

[复制链接]
发表于 2012-12-22 09:58:21 | 显示全部楼层 |阅读模式
做网络时延的实验。想使用ping采集数据。
实现功能:
1、 一天内每5分钟批量ping多个ip
2、从txt中读入ip地址
3、 将每次ping的ave值放入txt文件
格式:
      ip    date time  ave
发表于 2012-12-22 11:32:00 | 显示全部楼层
本帖最后由 再世情緣 于 2012-12-22 11:35 编辑

刚刚写了一个,测试还行。。。
注意把批处理命名为pp.bat,为后面的vbs定时脚本用。。。

  1. @echo off &&color 0a
  2. setlocal enabledelayedexpansion
  3. pushd "%cd%"
  4. :main
  5. if not exist "ip.txt" msg %username% /time:5 "错误!!请确认IP地址已存入当前目录下的ip.txt文本!!!" &&call exit
  6. if not exist "ping_result.txt" echo.IP                Date                Time                AVE >ping_result.txt
  7. for /f "delims=" %%a in (ip.txt) do (
  8.   set "ip=%%a"
  9.   echo.正在Ping !ip! , 请稍后 ....
  10.   ping -w 500 -n 4 !ip! | findstr /i "Average" >tmp.txt ||set "Ave=NULL"
  11.   for /f "tokens=3 delims=," %%i in (tmp.txt) do (
  12.     set "Average=%%i"
  13.     for /f "tokens= 3 delims= " %%m in ("!Average!") do (
  14.     set "Ave=%%m"
  15.     )
  16.   )
  17.   echo.!ip!        !date:~,10!        !time:~,8!         !Ave! >>ping_result.txt
  18. )
  19. del /q /f tmp.txt
  20. call exit
复制代码
每次Ping 会生成一个临时文件tmp.txt,你要的结果放在脚本所在目录,文档名称为ping_result.txt,如果Ping 不通,Ave值为Null ,请把ip地址列表放在脚本所在目录,格式为
  1. 192.168.1.1
  2. 192.168.1.2
  3. ......
复制代码
至于你要的每5分钟自动ping。。。这个。。。批处理窗口一直开着。。。有时候系统会自动结束cmd(貌似是,反正我的机器经常自动结束cmd.exe,尤其是后台运行的时候。。。),建议用vbs脚本写,放在同一目录,直接运行vbs就行,我vbs刚刚入门。。。。再次献丑了。。。
  1. for i=0 to 65536
  2.   WSCript.CreateObject("WSCript.shell").run "pp.bat", 1
  3.   WSCript.sleep "300000"
  4. next
复制代码
这个。。。刚才测试360竟然说这个vbs是木马。。。。兄弟,天地良心啊,至于你用不用。。。。您看着办吧。。。对了,vbs运行的时候是后台的。。。如果需要关闭,打开一个新的cmd窗口
  1. taskkill /f /im "wscript.exe"
复制代码
发表于 2012-12-22 15:12:40 | 显示全部楼层
修改下 隐藏运行
  1. if "%~1"=="" mshta vbscript:createobject("wscript.shell").run("%~s0 0",0)(window.close)&exit
  2. @echo off&setlocal enabledelayedexpansion
  3. if not exist "ip.txt" msg %username% /time:5 "错误!!请确认IP地址已存入当前目录下的ip.txt文本!!!"&exit
  4. if not exist "ping_result.txt" >ping_result.txt echo.IP                Date                Time                AVE
  5. :loop
  6. for /f "delims=" %%i in (ip.txt) do (
  7.   set "Ave=NULL"
  8.   for /f "skip=11 tokens=4 delims==" %%j in ('ping -w 500 -n 4 %%i') do set "Ave=%%j"
  9.   >>ping_result.txt echo;%%i        !date:~,10!        !time:~,8!        !Ave: =!
  10. )
  11. ping/n 300 127.1>nul
  12. goto loop
复制代码
测试环境 win xp3
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 20:15 , Processed in 0.082781 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表