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

[网络连接] [已解决]批处理如何根据MAC查找局域网内网卡在线情况?

本帖最后由 mxxcgzxxx 于 2013-2-19 18:39 编辑

使用什么命令行命令可以通过MAC地址定向查找局域网内的网卡是否在线
第三方软件如果能做到也行,
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
世界上没有学不会的知识,也没有想得到却做不到的事!

回复 9# group
学习了多谢指导
确实nbtstat虽然返回数据多些,但实测中发现如果对方是无线接入又无用计算机名称的情况下(手机最常见)会检测不到
而arp则可以,因为它只要两个关键数据IP和MAC就行
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

回复 8# mxxcgzxxx


    arp -d可以删除原有记忆,这样就不容易受干扰了

TOP

本帖最后由 mxxcgzxxx 于 2013-2-19 21:38 编辑

发现不可以使用arp命令,如果在线时检过了,对方关机后arp中数据依然存在,所以没有检测对方是否在线的意义
但用nbtstat加findstr在循环中太慢,权衡了一下调整如下
  1. @ECHO OFF
  2. set "ip=10.150.10."
  3. set "mac=00-E0-4C-89-A5-AF"
  4. set n=0
  5. :1
  6. ping -n 1 -w 1 %ip%%n% >nul || goto :2
  7. nbtstat -a 10.150.10.%n% | findstr " %mac% " >nul || goto :2
  8. goto :3
  9. :2
  10. set /a n+=1
  11. if %n%==255 echo 不在线 &pause &goto :eof
  12. goto :1
  13. :3
  14. ::获取信息
  15. for /f "tokens=1,2,3 delims== " %%1 in ('nbtstat -a %ip%%n% ^| findstr " <00> "') do (
  16. if "%%3"=="UNIQUE" set "m=%%1"
  17. if "%%3"=="GROUP" set "g=%%1"
  18. )
  19. echo IP              计算机名          工作组
  20. echo %ip%%n%  %m%    %g%
  21. PAUSE
复制代码
实测网内只存在2个有效IP情况下
对方在101 时时间1分钟左右
对方在251时时间2分半左右
需要注意的是:
arp使用的是小写MAC
nbtstat使用的是大写MAC
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

本帖最后由 mxxcgzxxx 于 2013-2-19 18:41 编辑

绕了那么多弯弯才发现原来PING命令的-w参数就可以完美解决了
  1. for /l %%a in (0,1,254) do ( ping -n 1 -w 1 10.150.10.%%a ) >nul
  2. arp -a|find /i "网卡地址"
复制代码
PING完花了2分钟,如果中途判断就可以更省时了
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

回复 4# BAT-VBS
在网内只有两个有效IP的情况下检索一遍要近19分钟,如果有效在线IP越多时间就越少,问题在于如果IP是自分配而在线机数量又不明的情况下时间就长短不一了。
尝试了一下,就以我的机子来说
不在线的平均时间为:4.42~4.5秒/次 255次约要18分钟
在线的时间为:0.08~0.17秒/次 255次约要30秒
所以差别还是很大的。

回复 5# group
如你所说
另一种方案就只有规定时间了,在规定时间内强行关闭命令执行下一步,在关闭前PING通的则有返回值,按我的机子也就是说在0.2秒后关闭,总时间就可以减缩到51秒左右
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

回复 3# mxxcgzxxx


    网络上,我们知道的只是一个相对的门牌号(ip),要知道门里面主人的名字(mac)只能先逐户敲开问一问,所以查某个门牌号是很容易的,查某人住哪家是很麻烦的

TOP

回复 3# mxxcgzxxx


    2楼代码花了多长时间?

TOP

本帖最后由 mxxcgzxxx 于 2013-2-18 13:54 编辑

这个我想过,但太耗时了,从1到255,ping完就花了很长时间了,如果要反复拼一直到拼通为止,来检测对方是否开机,那不知要多少时间。有没有办法不走IP路线,只单一侦查MAC是否在线的办法
或者可以跳过不在线的IP,也可以省不少时间
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

本帖最后由 group 于 2013-2-18 03:34 编辑
  1. @echo off
  2. (for /l %%a in (0 1 255) do start /b ping /n 1 192.168.0.%%a)
  3. arp -a|find /i "网卡地址"
  4. pause
复制代码

TOP

返回列表