[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 【已解决】批处理如何通过主机名查询对应的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. ----------------------------------------------------------------------------------------------------------
复制代码
强迫症害得,最终实现效果像上面的就完美了。。。或者把获取的值打印到控制台就行。不知道哪位大哥可以帮帮忙,谢谢了。

ping 主机/getmac 主机
wmic

TOP

能举个例子吗

TOP

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

评分人数

TOP

回复 4# flyinnet9


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

TOP

本帖最后由 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. -------------------------------------------------------------
复制代码

TOP

回复 6# flyinnet9


    能不能也改ping主机还是取IPV4,取不到的那些IP显示为空。

TOP

本帖最后由 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. )
复制代码

TOP

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

回复 8# flyinnet9


    给你1024个赞,这个太给力了,不知道效率上可不可以优化,后续讨论。

TOP

回复 4# flyinnet9
局域网环境下,xp系统。。这个代码运行不正常。。
1

评分人数

    • pcl_test: 同贴代码勿重发,指明几楼即可PB -6

TOP

回复 8# flyinnet9


    win7系统下。。这个bat代码运行以后。结果如下。能否将最后一行:命令成功完成。去掉?谢谢

TOP

回复 11# ygqiang


for /f "skip=3 delims=\ " %%a in ('net view ^| findstr /v "命令成功完成"') do (

TOP

回复 12# DAIC


    放在哪个位置?

TOP

回复 10# ygqiang


    没有winxp系统,测不了,估计也就是find关键字定位那里的问题,自己改下呗

TOP

回复 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系统。局域网环境下。这个代码,测试结果如下:
1

评分人数

    • pcl_test: 同贴代码勿重发,指明几楼即可PB -30

TOP

返回列表