标题: [系统相关] 【已解决】批处理如何通过主机名查询对应的IP和MAC地址? [打印本页]
作者: xiaolijian916 时间: 2015-12-8 19:36 标题: 【已解决】批处理如何通过主机名查询对应的IP和MAC地址?
本帖最后由 xiaolijian916 于 2015-12-11 10:12 编辑
这是获取的局域网的所有主机名的代码:- @echo off &setlocal enabledelayedexpansion
- Title 局域网空闲IP查询
-
- for /f "delims= " %%i in ('net view') do (
-
- set "var=%%i"
- set "tmp="
- rem ----------获取计算机名称------------
- if "!var:~0,2!"=="\\" (
- set "var=!var:~2!"
- echo !var!
- )
- )
- pause>nul
复制代码
想反推根据获取的主机名推出IP,再通过推出的IP,得出最后的MAC地址,写成一个数据表格展现出来,
效果如下:- ----------------------------------------------------------------------------------------------------------
- | 主机名 | IP地址 | MAC地址 |
- ----------------------------------------------------------------------------------------------------------
- | ECIT-PC | 192.168.1.201 | 22-16-D8-D5-F5-C5 |
- ----------------------------------------------------------------------------------------------------------
- | ASLK-PC | 192.168.2.103 | 74-10-28-16-C4-F2 |
- ----------------------------------------------------------------------------------------------------------
复制代码
强迫症害得,最终实现效果像上面的就完美了。。。或者把获取的值打印到控制台就行。不知道哪位大哥可以帮帮忙,谢谢了。
作者: 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不通- @echo off
- setlocal enabledelayedexpansion
- echo. 主机名 ^| IP地址 ^| MAC地址
- for /f "skip=3 delims=\ " %%a in ('net view') do (
- set "host= %%a"
- set ip=
- set mac=
- for /f "tokens=2 delims=[]" %%b in ('ping %%a -n 1 ^|find /i "ping %%a"') do set "ip= %%b"
- for /f "tokens=4 delims= " %%c in ('nbtstat -a %%a ^|find /i "MAC 地址"') do set "mac= %%c"
- echo.!host:~-19!^|!ip:~-19!^|!mac:~-19!
- )
复制代码
作者: 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- LENOVO-E450 |:b630:f128:5a48%9 | C0-38-96-6B-7B-83 |
- | NAXX | 192.168.1.97 | 9C-D2-1E-44-8A-91 |
- | RMT | 192.168.1.37 | 00-50-56-B1-31-2D |
- | SCANPC | 192.168.1.251 | 00-24-21-7D-AD-28 |
- | SD01 |~-19mac:~-19|
- -------------------------------------------------------------
复制代码
作者: 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
处女座和强迫症患者的福音........- @echo off
- setlocal enabledelayedexpansion
- echo.-------------------------------------------------------------
- echo.^| 主机名 ^| IP地址 ^| MAC地址 ^|
- echo.-------------------------------------------------------------
- for /f "skip=3 delims=\ " %%a in ('net view') do (
- set "host= %%a "
- set ip=
- set mac=
- for /f "tokens=2 delims=[]" %%b in ('ping -4 %%a -n 1 ^|find /i "ping %%a"') do set "ip= %%b "
- for /f "tokens=4 delims= " %%c in ('nbtstat -a %%a ^|find /i "MAC 地址"') do set "mac= %%c "
- if not defined ip set "ip= ----- "
- if not defined mac set "mac= ----- "
- echo.^|!host:~-19!^|!ip:~-19!^|!mac:~-19!^|
- echo.-------------------------------------------------------------
- )
复制代码
作者: 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 - @echo off
- setlocal enabledelayedexpansion
- del /q user-ip-mac.txt
- echo.------------------------------------------------------------->>user-ip-mac.txt
- echo.^| 主机名 ^| IP地址 ^| MAC地址 ^|>>user-ip-mac.txt
- echo.------------------------------------------------------------->>user-ip-mac.txt
- for /f "skip=3 delims=\ " %%a in ('net view') do (
- set "host= %%a "
- set ip=
- set mac=
- for /f "tokens=2 delims=[]" %%b in ('ping -4 %%a -n 1 ^|find /i "ping %%a"') do set "ip= %%b "
- for /f "tokens=4 delims= " %%c in ('nbtstat -a %%a ^|find /i "MAC 地址"') do set "mac= %%c "
- if not defined ip set "ip= ----- "
- if not defined mac set "mac= ----- "
-
- echo.^|!host:~-19!^|!ip:~-19!^|!mac:~-19!^|>>user-ip-mac.txt
- echo.------------------------------------------------------------->>user-ip-mac.txt
-
- )
复制代码
xp系统。局域网环境下。这个代码,测试结果如下:
作者: xiaolijian916 时间: 2015-12-10 13:25
回复 15# ygqiang
没试过XP的,原来有这么多小伙伴们都有这个需求呀,看来没白提问,路过高手们看看XP下为什么上面的代码显示不出IP,MAC地址。
作者: xiaolijian916 时间: 2015-12-10 13:28
回复 11# ygqiang - 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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |