Board logo

标题: [网络连接] 批处理扫描局域网电脑,列出 MAC、IP 和 计算机名 [打印本页]

作者: cutebe    时间: 2022-4-20 11:31     标题: 批处理扫描局域网电脑,列出 MAC、IP 和 计算机名

原帖在回复中。为了方便大家搜索,发一个主题帖。

功能:对局域网进行扫描,列出Win系统的MAC/IP/计算机名。适用XP/Win7,其他未测试。
命令:主要使用Ping检查是否通,再用nbtstat查询电脑3信息。
耗时:ping命令使用超时返回,因此速度很快;而nbtstat命令没有相关参数,遇到无效设备时浪费很多时间。修改IP扫描范围可减少耗时。
缺陷:非Win电脑设备耗时较长,如:Linux服务器、考勤机等。ping延时较长的电脑可能漏检,原因是命令中设置了99ms的返回时间,可自行修改。
  1. ::扫描IP名MAC.bat::XP/Win7::
  2. ::ping -n 1 -w 99 %ip%/ping -a/arp -a
  3. ::nbtstat -a %ip%
  4. @echo off
  5. setlocal enableDelayedExpansion
  6. set "ip3=192.168.1"
  7. for /l %%i in (1,1,254)do (%_起始IP_步长_终止IP_%
  8. set "MAC="
  9. call :CheckIPstatus %ip3%.%%i&&call :GetIPNameMAC %ip3%.%%i Name MAC
  10. if !errorlevel! equ 0 echo/[!MAC!] [%ip3%.%%i] [!Name!]
  11. )
  12. pause
  13. goto :eof
  14. ::[完]
  15. ::ping是否通:返回码stat=失败/Lost
  16. :CheckIPstatus IP
  17. for /f "tokens=3 delims=,," %%p in ('"ping -n 1 -w 99 %1|findstr /i "数据包 Packets""')do (
  18. for /f "tokens=3" %%s in ("%%p")do set "stat=%%s"
  19. )
  20. exit/b %stat%
  21. ::nbtstat查ip对应计算机名、MAC
  22. :GetIPNameMAC IP Name MAC
  23. setlocal
  24. for /f "delims=" %%n in ('"nbtstat -a %1|findstr /ic:"唯一" /c:"UNIQUE" /c:"MAC ""')do (
  25. set "nbt=%%n"
  26. set "nbt=!nbt:<= !"
  27. set "nbt=!nbt:>=!"
  28. if "!nbt:唯一=!!nbt:UNIQUE=!" neq "!nbt!!nbt!" for /f %%m in ("!nbt!")do set "Name=%%m"
  29. if "!nbt:MAC=!" neq "!nbt!" for /f "tokens=4" %%m in ("!nbt!")do set "MAC=%%m"
  30. )
  31. if "%MAC%"=="" (set Bcode=1)else set Bcode=0
  32. endlocal&set %2=%Name%&set %3=%MAC%&exit/b %Bcode%
复制代码
改进建议:如有很多非Win电脑设备(nbtstat命令无法识别的设备),可以考虑使用临时文件以加快速度。




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