Board logo

标题: [网络连接] [已解决]批处理怎样PING局域网段内所有IP并输出不通的IP地址? [打印本页]

作者: teninlove    时间: 2010-3-19 16:14     标题: [已解决]批处理怎样PING局域网段内所有IP并输出不通的IP地址?

题目说的很饶舌……

批处理的效果就是从XXX.XXX.XXX.1  PING到 XXX.XXX.XXX.255
每个IP都-N 1
然后将没有PING通的IP输出在文本里。
或者将PING通的输出文本也可以。

我根据网上整理了一个
  1. @Echo off
  2. date /t > IPList.txt
  3. time /t >> IPList.txt
  4. echo =========== >> IPList.txt
  5. For /L %%f in (1,1,5) Do Ping.exe -n 1 59.73.195.%%f
  6. Find
  7. "Request timed out." & echo 59.73.195.%%f Timed Out >>
  8. IPList.txt
  9. pause
复制代码
但是不起作用,最后输出的文本如下面:
  1. 2010-03-19 星期五
  2. 15:39
  3. ===========
复制代码
竟然没有输出结果
从1 PING 到5 ,都没有PING通
按道理应该输出:
  1. 2010-03-19 星期五
  2. 15:39
  3. ===========
  4. 59.73.195.1
  5. 59.73.195.2
  6. 59.73.195.3
  7. 59.73.195.4
  8. 59.73.195.5
复制代码
请同事们指教。

[ 本帖最后由 teninlove 于 2010-3-20 08:14 编辑 ]
作者: teninlove    时间: 2010-3-19 16:41

什么个情况啊????
作者: BatCoder    时间: 2010-3-19 16:45

  1. @echo off
  2. date /t >IPList.txt
  3. time /t >>IPList.txt
  4. echo ===========>>IPList.txt
  5. for /l %%f in (1,1,5) do (
  6.     ping.exe -n 1 59.73.195.%%f | find "Request timed out." && echo 59.73.195.%%f Timed Out>>IPList.txt
  7. )
复制代码

作者: gshccr    时间: 2010-3-19 16:48

  1. @Echo off
  2. date /t > IPList.txt
  3. time /t >> IPList.txt
  4. echo =========== >> IPList.txt
  5. For /L %%f in (1,1,5) Do (Ping.exe -n 1 59.73.195.%%f | Find /i "Request timed out."&&echo 59.73.195.%%f Timed Out >>IPList.txt)
  6. pause
复制代码
其实直接用II就可以了!不用find
作者: jcy0307    时间: 2010-3-19 19:15

这个是自己闲来无事的时候做的,还未完成。不过满足你的需求足够了!
  1. @echo off
  2. title 查看局域网在线计算机  ****jcy0307****
  3. color 0a
  4. setlocal EnableDelayedExpansion
  5. if exist ip.txt del ip.txt
  6. set a=1
  7. :start
  8. cls
  9. echo.
  10. echo 正在测试--192.168.0.%a%
  11. ping 192.168.0.%a% -w 1 -n 1 | find /i "Lost = 1" && set c=1||set c=0
  12. if !c!==0 (echo 192.168.0.%a% >>IP.txt)
  13. set /a a=%a%+1
  14. if "%a%"=="255" goto ip
  15. goto start
  16. :ip
  17. cls
  18. echo.
  19. set b=0
  20. for /f "delims= " %%i in (ip.txt) do (
  21. set /a b=!b!+1
  22. echo %%i>nul
  23. )
  24. echo                               当前在线计算机
  25. echo ===============================================================================
  26. echo.
  27. echo        计算机名          IP           状  态            开放端口      
  28. echo.
  29. for /f "delims= " %%j in (ip.txt) do (
  30. echo                      %%j       在线     
  31. )
  32. echo ===============================================================================
  33. echo                                               当前有!b!台计算机在线         
  34. pause>nul
  35. exit
复制代码

作者: teninlove    时间: 2010-3-19 19:35

经测试3、4、5楼的均可用。
5楼的专业令人肃然起敬,忽略了回包周期,要比3、4楼的快了很多。

同谢3、4、5
作者: neorobin    时间: 2010-3-19 21:33

要提高效率的话, 请参考此帖
http://bbs.bathome.net/viewthread.php?tid=6754&page=1#pid43901
修改一下就可高效的达到楼主的意图
作者: jcy0307    时间: 2010-3-19 21:39

主动给已获解决的求助帖标题加注[已解决]字样的,将会得到管理层的加分奖励。
记得加上哦
作者: hacker85    时间: 2011-12-16 14:02

回复 7# neorobin


    我去看了这个地址处的代码,结果是不能运行。
我的系统是win7
IP段是:10.64.68
作者: hacker85    时间: 2011-12-16 14:05

回复 6# teninlove


    我不知道你是怎么测试的,我的系统是win7,但是我的测试结果是:
5 楼 :无论有多少人在线或者不在线,它返回的结果都是在线,比如你想ping10个人,结果它返回10个在线,意味着它并没有工作呀
3楼和4楼的代码实际上是一样的,其实际的运行结果也是一样的:IPList.txt中只有时间和=======,剩下再无别的内容了。
作者: beck1321    时间: 2012-9-13 20:46

mark之~~~~~~~~~~~~~~~




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