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

[网络连接] [已解决]批处理下怎样能够同时ping 多个Ip地址

本帖最后由 gmwd18 于 2012-2-24 09:22 编辑

如题,我要同时ping多个ip地址,我把这些ip保存到一个txt文件里面,现在怎样做才能让批处理同时ping 这多个ip地址呢?
同时将ping的返回信息保存到以ip地址为文件名的txt文件中。小弟不才,想不出什么方法来实现这个代码,还请各位大大指点一二~~,不胜感激啊!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

自己先顶一下~

TOP

批处理只是读取信息进行相对应的操作。
  1. @echo off
  2. for /f %%i in (ip.txt) do ping %%i -n 1 >>%%i.txt
  3. pause
复制代码
莫求昨天无悔,但愿今日无愧。

TOP

回复 3# guaiwu


    楼主说
  1. 同时ping 多个Ip地址
复制代码
啊。。

TOP

回复 3# guaiwu


    这个只能ping一次,如果我要ping的次数多了就不行了,for循环是每个命令执行完毕后,才会进行下一个循环~~

TOP

有哪位大大能给个示例,我看论坛上也有人讨论过,应该是要写2个bat,一个调用一个,这样才能实现同时,我在网上也看到说是伪多线程~~
自己再顶~

TOP

  1. for %%i in (0.0.0.0 1.1.1.1 2.2.2.2) do start ping %%i>>%%i.txt
复制代码
1

评分人数

TOP

最笨的办法
  1. @echo off
  2. start "" ping 192.168.1.101
  3. start "" ping 192.168.1.102
  4. start "" ping 192.168.1.103
  5. pause
复制代码

如果比较多,而常用,就修改成for,同楼上。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

嘿嘿,这个我搞定了,就是要编两个bat,主程序调用另一个,用start命令把变量附带上就行了,这样可以进行同时ping了,提高效率,不过Ip不能太多哦~

TOP

回复 9# gmwd18


一个就行了吧
  1. @echo off
  2. for /l %%a in (101,1,103) do (
  3.     start ping 192.168.1.%%a
  4. )
复制代码

TOP

回复 10# Perl

你这个是能同时Ping,但是不会把结果保存到文本文件里面,我加个重定向怎么出来都是空文件?
是不是没有执行重定向?start只开了多个ping程序,没有做重定向,是不是因为重定向的命令执行时没有命令行的解释器环境了?所以执行不了呢~

TOP

回复 11# gmwd18


你自己加上重定向试试呢?

TOP

回复 12# find

我加了重定向,出来的都是空文件。。。

TOP

不能多个命令同时往一个文件中写入内容,可以写入多个文件最后合并。
其实解决这问题没有必要用批处理,用工具还是比较合适,并且效率高,如NirSoft的PingInfoView。
http://www.nirsoft.net/utils/multiple_ping_tool.html

TOP

本帖最后由 liaobiaoxing 于 2012-3-2 00:39 编辑

我临时做了个,有两个文件,考虑压力,做了延时,运行1.cmd,缺点不少。254个IP地址10S左右。求优化。
1.cmd
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p ipad=请输入IP段(如果你是192.168.1.X网段,请输入192.168.1):
  3. for /l %%j in (0,1,25) do (
  4. for /l %%k in (1,1,9) do (
  5. start /min 2.cmd %ipad%.%%j%%k)
  6. ping -n 1 127.1>nul)
复制代码
2.cmd
  1. setlocal enabledelayedexpansion
  2. ping -n 1 %1|find "TTL="
  3. if !errorlevel!==0 echo %1>>alive.txt
  4. EXIT
复制代码

TOP

返回列表