Board logo

标题: [网络连接] [已解决]批处理下怎样能够同时ping 多个Ip地址 [打印本页]

作者: gmwd18    时间: 2012-2-22 15:52     标题: [已解决]批处理下怎样能够同时ping 多个Ip地址

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

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

作者: gmwd18    时间: 2012-2-22 16:43

自己先顶一下~
作者: guaiwu    时间: 2012-2-22 18:12

批处理只是读取信息进行相对应的操作。
  1. @echo off
  2. for /f %%i in (ip.txt) do ping %%i -n 1 >>%%i.txt
  3. pause
复制代码

作者: garyng    时间: 2012-2-22 19:33

回复 3# guaiwu


    楼主说
  1. 同时ping 多个Ip地址
复制代码
啊。。
作者: gmwd18    时间: 2012-2-23 09:16

回复 3# guaiwu


    这个只能ping一次,如果我要ping的次数多了就不行了,for循环是每个命令执行完毕后,才会进行下一个循环~~
作者: gmwd18    时间: 2012-2-23 09:32

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

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

作者: cjiabing    时间: 2012-2-23 11:10

最笨的办法
  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,同楼上。
作者: gmwd18    时间: 2012-2-24 09:17

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

回复 9# gmwd18


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

作者: gmwd18    时间: 2012-2-27 11:36

回复 10# Perl

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

回复 11# gmwd18


你自己加上重定向试试呢?
作者: gmwd18    时间: 2012-2-27 14:24

回复 12# find

我加了重定向,出来的都是空文件。。。
作者: qiwei201    时间: 2012-2-27 16:17

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

本帖最后由 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
复制代码

作者: gmwd18    时间: 2012-3-2 10:31

回复 14# qiwei201


    呵呵,这个软件确实挺强大的,本人现在就在用,这个批处理是一时想起,所以做了一个尝试~~
作者: weihua_bat    时间: 2017-2-24 03:53

回复 3# guaiwu


    第个IP生成一个txt,我觉得不好。
作者: ygqiang    时间: 2017-2-24 18:40

回复 9# gmwd18


    你好,具体到1楼的解决方法,代码能否发出来。谢谢




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