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

[网络连接] [已解决]批处理如何通过ping命令来确认局域网某个网段中的故障机器?

如题,假设网段10.7.1.1-10.7.1.254  有254个设备接在多个交换机上、

想通过批处理的方式,依次遍历,并返回超时或者无法ping通的机器的信息,汇总到 D:\123.txt
1

评分人数

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

本帖最后由 flyinnet9 于 2015-7-11 18:28 编辑
  1. @echo off
  2. chcp 437
  3. setlocal enabledelayedexpansion
  4. for /l %%a in (1,1,254) do (
  5. ping 10.7.1.%%a >pinglog.txt
  6. For /f "skip=2 tokens=4 delims=: " %%i In ('find "statistics" pinglog.txt') Do set IP=%%i
  7. For /f "skip=2 tokens=4,7,11 delims=,( " %%j In ('find "Lost" pinglog.txt') Do set Sent=%%j&set Received=%%k&set Lost=%%l
  8. For /f "skip=2 tokens=3,6,9 delims=, " %%m In ('find "Average" pinglog.txt') Do set Minimum=%%m&set Maximum=%%n&set Average=%%o
  9. For /f "tokens=3" %%y in ('find /c "Request timed out" pinglog.txt') do set Count=%%y
  10. if !Count! neq 0 echo TIME OUT IPAddress=!IP! Sent=!Sent! Received=!Received! Lost=!Lost! Minimum=!Minimum! Maximum=!Maximum! Average=!Average>>d:\123.txt
  11. findstr /c:"Destination host unreachable" pinglog.txt && echo Unreachable IPAddress=!IP! Sent=!Sent! Received=!Received! Lost=!Lost!>>d:\123.txt
  12. )
  13. del /q pinglog.txt
复制代码
1

评分人数

TOP

  1. @echo off
  2. for /l %%i in (1,1,254) do (
  3. ping "10.7.1.%%i"|findstr "无法访问目标主机 如果是非中文系统语言自行转换">nul&&echo=网络异常IP:10.7.1.%%i
  4. )
  5. pause
复制代码
1

评分人数

TOP

回复 2# flyinnet9


亲,这个程序走到一半,会一直卡住啊,没有跳转的

TOP

回复 3# /zhqsystem/zhq


您的代码没有执行。。。。

TOP

本帖最后由 flyinnet9 于 2015-7-13 13:08 编辑

回复 4# yongtianjian


   测试没问题,在192.168.1段测了5个IP,结果如下
TIME OUT IPAddress=192.168.1.1 Sent=4 Received=3 Lost=25% Minimum=218ms Maximum=1270ms Average=842ms
Unreachable IPAddress=192.168.1.4 Sent=4 Received=4 Lost=0%
Unreachable IPAddress=192.168.1.5 Sent=4 Received=4 Lost=0%


你截屏吧第一行加rem,然后执行截屏看看

TOP

本帖最后由 kingshui 于 2015-7-13 15:04 编辑

其实ping的命令写多几个参数的话速度会快很多。
另外 find “TTL” 这样来判断的话中英文系统通用。
如:
  1. for /l %%i in (1,1,254) do ping -n 1 -l 1 -f -w 1 -4 110.7.1.%%i|find "TTL">nul || echo 110.7.1.%%i 网络故障>>error.txt
复制代码

TOP

回复 5# yongtianjian
7楼的代码很好,用他的吧

我的那个代码没有太大问题,没有删除搜索内说明信息,没有加入"返回超时"但是判断丢包的话就很难判断了

如果实在太多可以编写两个一个递增一个递减这样会比之前快很多,如果还觉得慢就编写255个一键调用(如果电脑垃圾别这么弄)

TOP

其实ping的命令写多几个参数的话速度会快很多。
另外 find “TTL” 这样来判断的话中英文系统通用。
如:
kingshui 发表于 2015-7-13 15:02



    多谢。。。如果换成在线机器检测。。。

这个代码应该如何修改?

TOP

返回列表