本帖最后由 mxxcgzxxx 于 2013-2-19 21:38 编辑
发现不可以使用arp命令,如果在线时检过了,对方关机后arp中数据依然存在,所以没有检测对方是否在线的意义
但用nbtstat加findstr在循环中太慢,权衡了一下调整如下- @ECHO OFF
- set "ip=10.150.10."
- set "mac=00-E0-4C-89-A5-AF"
- set n=0
- :1
- ping -n 1 -w 1 %ip%%n% >nul || goto :2
- nbtstat -a 10.150.10.%n% | findstr " %mac% " >nul || goto :2
- goto :3
-
- :2
- set /a n+=1
- if %n%==255 echo 不在线 &pause &goto :eof
- goto :1
-
- :3
- ::获取信息
- for /f "tokens=1,2,3 delims== " %%1 in ('nbtstat -a %ip%%n% ^| findstr " <00> "') do (
- if "%%3"=="UNIQUE" set "m=%%1"
- if "%%3"=="GROUP" set "g=%%1"
- )
- echo IP 计算机名 工作组
- echo %ip%%n% %m% %g%
- PAUSE
复制代码 实测网内只存在2个有效IP情况下
对方在101 时时间1分钟左右
对方在251时时间2分半左右
需要注意的是:
arp使用的是小写MAC
nbtstat使用的是大写MAC |