找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 78082|回复: 18

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

[复制链接]
发表于 2015-12-8 19:36:51 | 显示全部楼层 |阅读模式
本帖最后由 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. ----------------------------------------------------------------------------------------------------------
复制代码
强迫症害得,最终实现效果像上面的就完美了。。。或者把获取的值打印到控制台就行。不知道哪位大哥可以帮帮忙,谢谢了。
发表于 2015-12-8 20:04:08 | 显示全部楼层
ping 主机/getmac 主机
wmic
 楼主| 发表于 2015-12-8 23:04:06 | 显示全部楼层
能举个例子吗
发表于 2015-12-9 11:23:59 | 显示全部楼层
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. )
复制代码

评分

参与人数 1技术 +1 收起 理由
xiaolijian916 + 1 结果很接近了,不错!

查看全部评分

 楼主| 发表于 2015-12-9 15:45:32 | 显示全部楼层
回复 4# flyinnet9


    额,非常好了,不过有一个疑问,有的主机对应IP地址怎么是:a8:28:7ad9:3780%1或者~19mac:~13,这是怎么回事,有的主机名对应的MAC地址为空正常嘛?
发表于 2015-12-9 15:59:28 | 显示全部楼层
本帖最后由 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. -------------------------------------------------------------
复制代码
 楼主| 发表于 2015-12-9 16:30:09 | 显示全部楼层
回复 6# flyinnet9


    能不能也改ping主机还是取IPV4,取不到的那些IP显示为空。
发表于 2015-12-9 16:59:25 | 显示全部楼层
本帖最后由 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. )
复制代码
 楼主| 发表于 2015-12-9 17:50:47 | 显示全部楼层
本帖最后由 xiaolijian916 于 2015-12-9 17:53 编辑

回复 8# flyinnet9


    给你1024个赞,这个太给力了,不知道效率上可不可以优化,后续讨论。
发表于 2015-12-9 19:24:01 | 显示全部楼层
回复 4# flyinnet9
局域网环境下,xp系统。。这个代码运行不正常。。

评分

参与人数 1PB -6 收起 理由
pcl_test -6 同贴代码勿重发,指明几楼即可

查看全部评分

发表于 2015-12-9 19:29:33 | 显示全部楼层
回复 8# flyinnet9


    win7系统下。。这个bat代码运行以后。结果如下。能否将最后一行:命令成功完成。去掉?谢谢
发表于 2015-12-9 22:13:14 | 显示全部楼层
回复 11# ygqiang


for /f "skip=3 delims=\ " %%a in ('net view ^| findstr /v "命令成功完成"') do (
发表于 2015-12-9 22:32:33 | 显示全部楼层
回复 12# DAIC


    放在哪个位置?
发表于 2015-12-10 10:05:20 | 显示全部楼层
回复 10# ygqiang


    没有winxp系统,测不了,估计也就是find关键字定位那里的问题,自己改下呗
发表于 2015-12-10 12:37:45 | 显示全部楼层
回复 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系统。局域网环境下。这个代码,测试结果如下:

评分

参与人数 1PB -30 收起 理由
pcl_test -30 同贴代码勿重发,指明几楼即可

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:16 , Processed in 0.032673 second(s), 13 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表