Board logo

标题: [系统相关] 【已解决】批处理如何通过主机名查询对应的IP和MAC地址? [打印本页]

作者: xiaolijian916    时间: 2015-12-8 19:36     标题: 【已解决】批处理如何通过主机名查询对应的IP和MAC地址?

本帖最后由 xiaolijian916 于 2015-12-11 10:12 编辑

这是获取的局域网的所有主机名的代码:
  1. @echo off &setlocal enabledelayedexpansion
  2. Title 局域网空闲IP查询
  3. for /f "delims= " %%i in ('net view') do (
  4. set "var=%%i"
  5. set "tmp="
  6. rem ----------获取计算机名称------------
  7. if "!var:~0,2!"=="\\" (
  8. set "var=!var:~2!"
  9. echo !var!
  10. )
  11. )
  12. pause>nul
复制代码
想反推根据获取的主机名推出IP,再通过推出的IP,得出最后的MAC地址,写成一个数据表格展现出来,
效果如下:
  1. ----------------------------------------------------------------------------------------------------------
  2. |                主机名              |                 IP地址            |              MAC地址             |
  3. ----------------------------------------------------------------------------------------------------------
  4. |                ECIT-PC            |             192.168.1.201         |        22-16-D8-D5-F5-C5        |
  5. ----------------------------------------------------------------------------------------------------------
  6. |               ASLK-PC             |             192.168.2.103         |         74-10-28-16-C4-F2       |
  7. ----------------------------------------------------------------------------------------------------------
复制代码
强迫症害得,最终实现效果像上面的就完美了。。。或者把获取的值打印到控制台就行。不知道哪位大哥可以帮帮忙,谢谢了。
作者: pcl_test    时间: 2015-12-8 20:04

ping 主机/getmac 主机
wmic
作者: xiaolijian916    时间: 2015-12-8 23:04

能举个例子吗
作者: flyinnet9    时间: 2015-12-9 11:23

IP和MAC显示不出来的说明ping不通
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. echo.      主机名       ^|      IP地址       ^|      MAC地址      
  4. for /f "skip=3 delims=\ " %%a in ('net view') do (
  5.   set "host=                         %%a"
  6.   set ip=
  7.   set mac=
  8.   for /f "tokens=2 delims=[]" %%b in ('ping %%a -n 1 ^|find /i "ping %%a"') do set "ip=                       %%b"
  9.   for /f "tokens=4 delims= " %%c in ('nbtstat -a %%a ^|find /i "MAC 地址"') do set "mac=                      %%c"
  10.   echo.!host:~-19!^|!ip:~-19!^|!mac:~-19!
  11. )
复制代码

作者: xiaolijian916    时间: 2015-12-9 15:45

回复 4# flyinnet9


    额,非常好了,不过有一个疑问,有的主机对应IP地址怎么是:a8:28:7ad9:3780%1或者~19mac:~13,这是怎么回事,有的主机名对应的MAC地址为空正常嘛?
作者: flyinnet9    时间: 2015-12-9 15:59

本帖最后由 flyinnet9 于 2015-12-9 16:01 编辑

回复 5# xiaolijian916


   1.  a8:28:7ad9:3780%1  IPV6地址,ping自己的计算机名或者网络支持IPV6
   2. 网络ping不通,取不到值,所以显示的是echo
  1.    LENOVO-E450  |:b630:f128:5a48%9  | C0-38-96-6B-7B-83 |
  2. |             NAXX  |     192.168.1.97  | 9C-D2-1E-44-8A-91 |
  3. |              RMT  |     192.168.1.37  | 00-50-56-B1-31-2D |
  4. |           SCANPC  |    192.168.1.251  | 00-24-21-7D-AD-28 |
  5. |             SD01  |~-19mac:~-19|
  6. -------------------------------------------------------------
复制代码

作者: xiaolijian916    时间: 2015-12-9 16:30

回复 6# flyinnet9


    能不能也改ping主机还是取IPV4,取不到的那些IP显示为空。
作者: flyinnet9    时间: 2015-12-9 16:59

本帖最后由 flyinnet9 于 2015-12-9 17:33 编辑

回复 7# xiaolijian916
处女座和强迫症患者的福音........
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. echo.-------------------------------------------------------------
  4. echo.^|      主机名       ^|      IP地址       ^|      MAC地址      ^|
  5. echo.-------------------------------------------------------------
  6. for /f "skip=3 delims=\ " %%a in ('net view') do (
  7.   set "host=                         %%a  "
  8.   set ip=
  9.   set mac=
  10.   for /f "tokens=2 delims=[]" %%b in ('ping -4 %%a -n 1 ^|find /i "ping %%a"') do set "ip=                       %%b  "
  11.   for /f "tokens=4 delims= " %%c in ('nbtstat -a %%a ^|find /i "MAC 地址"') do set "mac=                      %%c "
  12.   if not defined ip set "ip=       -----       "
  13.   if not defined mac set "mac=       -----       "
  14.   echo.^|!host:~-19!^|!ip:~-19!^|!mac:~-19!^|
  15.   echo.-------------------------------------------------------------
  16. )
复制代码

作者: xiaolijian916    时间: 2015-12-9 17:50

本帖最后由 xiaolijian916 于 2015-12-9 17:53 编辑

回复 8# flyinnet9


    给你1024个赞,这个太给力了,不知道效率上可不可以优化,后续讨论。
作者: ygqiang    时间: 2015-12-9 19:24

回复 4# flyinnet9
局域网环境下,xp系统。。这个代码运行不正常。。
作者: ygqiang    时间: 2015-12-9 19:29

回复 8# flyinnet9


    win7系统下。。这个bat代码运行以后。结果如下。能否将最后一行:命令成功完成。去掉?谢谢
作者: DAIC    时间: 2015-12-9 22:13

回复 11# ygqiang


for /f "skip=3 delims=\ " %%a in ('net view ^| findstr /v "命令成功完成"') do (
作者: ygqiang    时间: 2015-12-9 22:32

回复 12# DAIC


    放在哪个位置?
作者: flyinnet9    时间: 2015-12-10 10:05

回复 10# ygqiang


    没有winxp系统,测不了,估计也就是find关键字定位那里的问题,自己改下呗
作者: ygqiang    时间: 2015-12-10 12:37

回复 14# flyinnet9
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. del /q user-ip-mac.txt
  4. echo.------------------------------------------------------------->>user-ip-mac.txt
  5. echo.^|      主机名       ^|      IP地址       ^|      MAC地址      ^|>>user-ip-mac.txt
  6. echo.------------------------------------------------------------->>user-ip-mac.txt
  7. for /f "skip=3 delims=\ " %%a in ('net view') do (
  8.   set "host=                         %%a  "
  9.   set ip=
  10.   set mac=
  11.   for /f "tokens=2 delims=[]" %%b in ('ping -4 %%a -n 1 ^|find /i "ping %%a"') do set "ip=                       %%b  "
  12.   for /f "tokens=4 delims= " %%c in ('nbtstat -a %%a ^|find /i "MAC 地址"') do set "mac=                      %%c "
  13.   if not defined ip set "ip=       -----       "
  14.   if not defined mac set "mac=       -----       "
  15.   echo.^|!host:~-19!^|!ip:~-19!^|!mac:~-19!^|>>user-ip-mac.txt
  16.   echo.------------------------------------------------------------->>user-ip-mac.txt
  17. )
复制代码
xp系统。局域网环境下。这个代码,测试结果如下:
作者: xiaolijian916    时间: 2015-12-10 13:25

回复 15# ygqiang


    没试过XP的,原来有这么多小伙伴们都有这个需求呀,看来没白提问,路过高手们看看XP下为什么上面的代码显示不出IP,MAC地址。
作者: xiaolijian916    时间: 2015-12-10 13:28

回复 11# ygqiang
  1. echo %%a | findstr "命令成功完成" && goto end
复制代码

作者: aa77dd@163.com    时间: 2015-12-10 14:03

本帖最后由 aa77dd@163.com 于 2015-12-10 14:04 编辑

推荐一工具

FastResolver  小巧, 好用, 完全免费, 官网也有中文语言包下载(尽管简单得用不着中文菜单)

FastResolver v1.26 - Scan IP addresses for host names and MAC addresses

http://www.nirsoft.net/utils/fastresolver.html
作者: xiaolijian916    时间: 2015-12-10 20:17

回复 18# aa77dd@163.com


    额,我想加到自己写的批处理中作为其中一个功能。




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