Board logo

标题: [网络连接] [分享]MAC地址查询批处理 [打印本页]

作者: sgaizxt001    时间: 2010-5-4 20:37     标题: [分享]MAC地址查询批处理

  1. @echo off
  2. title "局域网MAC地址查询"
  3. echo     感谢hanyeguxing,qzwqzw给我提供帮助,感谢www.bathome.net给我提供学习的机会,
  4. echo 有想学批处理的来批处理之家,不过请先看版规再发帖。
  5. echo.
  6. echo.
  7. echo 按任意键继续
  8. pause >nul
  9. cls
  10. echo.    此批处理比网上的局域网MAC地址扫描.exe的查询时间要快一点,而且会自动生成arp
  11. echo -s ip macaddress格式的批处理。但是有一点要注意,需要网络连的通才能查询的了,而
  12. echo 且IP地址为C类的192.168类型。IP地址列表支持格式为192.168.x.x-192.168.x.x的类型,
  13. echo 支持192.168.x.x换行192.168.x.x的类型,不过需要跟批处理放在同一文件夹下面。在输
  14. echo 入起始IP里,支持单IP,支持单IP段,支持跨网段查询,不过跨网段时之后最后一个网段
  15. echo 时从1到输入,前面的网段都是从1查询到254,意思就是说192.168.x.y的y其实是没起到
  16. echo 作用的,不过仍然需要按标准IP地址输入,但很少影响输出结果。
  17. echo.
  18. echo.
  19. echo 1.输入起始IP和结束IP来查找MAC地址输出到arp绑定.bat
  20. echo 2.从IP地址.txt读取IP来查找MAC地址输出到arp绑定.txt
  21. echo 3.按0退出
  22. set/p chio=请选择:
  23. if "%chio%" == "1" goto input
  24. if "%chio%" == "2" goto beifen
  25. if "%chio%" == "0" exit
  26. :input
  27. setlocal enabledelayedexpansion
  28. set/p min=请输入起始IP:
  29. set/p max=请输入结束IP:
  30. for /f "tokens=3,4,7,8 delims=." %%m in ("%min%.%max%") do (
  31.   set min_3=%%m
  32.   set min_4=%%n
  33.   set max_3=%%o
  34.   set max_4=%%p
  35.                                                            )
  36. if %min_3% equ %max_3% (goto li) else (goto lu)
  37. endlocal
  38. :end
  39. pause
  40. goto :eof
  41. :li
  42. for /l %%a in (%min_4%,1,%max_4%) do (
  43.   for /f "tokens=1* delims==" %%i in ('ping 192.168.%min_3%.%%a -n 1 -w 20 /l 1 ^>nul ^& if not errorlevel 1 nbtstat -a 192.168.%min_3%.%%a') do (
  44.      if not "%%j" == "" echo.arp -s 192.168.%min_3%.%%a  %%j>>arp绑定.bat
  45.                            )
  46.              )
  47. goto :eof
  48. :lu
  49. for /l %%b in (%min_3%,1,%max_3%) do (
  50. for /l %%a in (1,1,254) do (
  51.    set /a max_5=max_4+1
  52.    if not "%%b.%%a" == "!max_3!.!max_5!" (
  53.    for /f "tokens=1* delims==" %%i in ('ping 192.168.%%b.%%a -n 1 -w 20 /l 1 ^>nul ^& if not errorlevel 1 nbtstat -a 192.168.%%b.%%a') do (
  54.      if not "%%j" == "" echo.arp -s 192.168.%%b.%%a  %%j>>arp绑定.bat
  55.                                       )
  56.                           ) else (
  57.                              goto end
  58.                                  )
  59.                    )
  60. )
  61. goto :eof
  62. :beifen
  63. setlocal enabledelayedexpansion
  64. for /f "tokens=1,2 delims=-" %%a in (IP地址.txt) do (
  65.   if not "%%b" == "" (
  66.     set min=%%a
  67.     set max=%%b      
  68.     goto lp          ) else (
  69.        goto lo
  70.                             )
  71.                                                     )
  72. endlocal
  73. pause
  74. :lp
  75. for /f "tokens=3,4,8 delims=." %%c in ("!min!.!max!") do (
  76.     set min_2=%%c
  77.     set min_3=%%d
  78.     set min_4=%%e   
  79.                                                          )
  80. for /l %%i in (!min_3!,1,!min_4!) do (
  81.       for /f "tokens=1* delims==" %%j in ('ping 192.168.!min_2!.%%i -n 1 -w 20 /l 1 ^>nul ^& if not errorlevel 1 nbtstat -a 192.168.!min_2!.%%i') do (
  82.         if not "%%k" == "" echo.arp -s 192.168.!min_2!.%%i  %%k>>arp绑定.txt
  83.                                      )
  84. )
  85. goto :eof
  86. :lo
  87. for /f "delims=" %%c in (IP地址.txt) do (
  88. for /f "tokens=1* delims==" %%j in ('ping %%c -n 1 -w 20 /l 1 ^>nul ^& if not errorlevel 1 nbtstat -a %%c') do (
  89.         if not "%%k" == "" echo.arp -s %%c  %%k>>arp绑定.txt
  90.                                      )
  91. )
  92. goto :eof
复制代码
应该算是初稿,以后慢慢完善,不过目前可以完成简单的功能,发出来给大家指点。
没对IP输入格式进行判断,如果乱输造成死机或者其他损失的不负责哦。如果按标准输入IP格式,是不会有问题的

[ 本帖最后由 sgaizxt001 于 2010-5-4 21:10 编辑 ]
作者: ccccpp    时间: 2011-9-2 17:36

输出无反应!!




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