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

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

[复制链接]
发表于 2015-7-11 11:45:55 | 显示全部楼层 |阅读模式
如题,假设网段10.7.1.1-10.7.1.254  有254个设备接在多个交换机上、

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

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-7-11 11:57:58 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
yongtianjian + 1 谢谢

查看全部评分

发表于 2015-7-12 00:59:15 | 显示全部楼层
  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技术 +1 收起 理由
yongtianjian + 1 很简洁,谢谢

查看全部评分

 楼主| 发表于 2015-7-13 07:49:00 | 显示全部楼层
回复 2# flyinnet9


亲,这个程序走到一半,会一直卡住啊,没有跳转的
 楼主| 发表于 2015-7-13 08:05:55 | 显示全部楼层
回复 3# /zhqsystem/zhq


您的代码没有执行。。。。
发表于 2015-7-13 13:07:47 | 显示全部楼层
本帖最后由 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,然后执行截屏看看
发表于 2015-7-13 15:02:47 | 显示全部楼层
本帖最后由 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
复制代码
发表于 2015-7-13 22:11:41 | 显示全部楼层
回复 5# yongtianjian
7楼的代码很好,用他的吧

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

如果实在太多可以编写两个一个递增一个递减这样会比之前快很多,如果还觉得慢就编写255个一键调用(如果电脑垃圾别这么弄)
发表于 2015-7-14 07:56:44 | 显示全部楼层
其实ping的命令写多几个参数的话速度会快很多。
另外 find “TTL” 这样来判断的话中英文系统通用。
如:
kingshui 发表于 2015-7-13 15:02



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

这个代码应该如何修改?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 21:32 , Processed in 0.011574 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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