标题: [文本处理] 批处理如何获取本机MAC地址并从指定文本中提取出该MAC地址所对应的IP地址赋值给变量 [打印本页]
作者: lywlhs 时间: 2008-12-5 12:56 标题: 批处理如何获取本机MAC地址并从指定文本中提取出该MAC地址所对应的IP地址赋值给变量
本帖最后由 pcl_test 于 2016-11-26 22:29 编辑
因为不会编程,所以描述的语言很混乱。通过版主的细心讲解,现在把问题重新描述一下。
我现在有一个mac.ini的文件,里面记录的是mac和IP的对应表。我现在想通过命令得到本机的MAC地址,然后用得到的MAC到mac.ini里找到和这个MAC对应的IP地址,并且赋值给变量。我就是要得到这个变量。我的mac.ini放在C盘根目录下。我只有一个网卡。
我的mac.ini文件内容和格式如下:
00:F0:3B:96:B8:5D=192.168.0.2
00:F0:3B:96:E1:F6=192.168.0.3
00:F0:3B:96:92:C7=192.168.0.4
..........
还请大家帮忙看一下。
[ 本帖最后由 lywlhs 于 2008-12-5 19:30 编辑 ]
作者: wxcute 时间: 2008-12-5 14:43
顶楼很难看清楚阿,请楼主检查修改好点哦- @echo off
- set Mac=00-F0-4C-86-00-00
- for /f "tokens=2 delims==" %%b in ('"find /i "%Mac%" "c:\mac.ini""') do set IP=%%b
- if defined IP (echo %IP%) else echo 未记录此 MAC
- pause
复制代码
作者: lywlhs 时间: 2008-12-5 19:23
测试了一下。不知道为什么,上面的代码还是不能得到MAC对应的IP。
[ 本帖最后由 lywlhs 于 2008-12-5 19:27 编辑 ]
作者: batman 时间: 2008-12-5 19:47
仅适用于单网卡- @echo off
- rem 获得本机MAC
- for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr /c:"Physical Address"') do set "mac=%%i"&goto next
- :next
- for /f "tokens=2 delims==" %%i in ('findstr "%mac:~1%" mac.ini') do set "ip=%%i"
- echo %ip%&pause>nul
复制代码
作者: lywlhs 时间: 2008-12-5 19:56
C:\Documents and Settings\user\桌面>rem 获得本机MAC
C:\Documents and Settings\user\桌面>for /F "tokens=2 delims=:" %i in ('ipcon
fig /all|findstr /c:"Physical Address"') do set "mac=%i" & goto next
" & goto next d Settings\user\桌面>set "mac= 00-F0-3B:96-92-C7
C:\Documents and Settings\user\桌面>for /F "tokens=2 delims==" %i in ('finds
tr "00-F0-3B:96-92-C7" c:\Mac.ini') do set "ip=%i"
C:\Documents and Settings\user\桌面>echo & pause1>nul
ECHO 处于打开状态
还是不行。
作者: Batcher 时间: 2008-12-5 20:03
代码保存为test.bat
双击运行test.bat
- @echo off
- for /f %%a in ('getmac^|findstr "^00-"') do (
- set MAC=%%a
- goto :look
- )
- :look
- set MAC=%MAC:-=:%
- for /f "tokens=2 delims==" %%a in ('findstr "%MAC%" C:\mac.ini') do (
- set IP=%%A
- )
- if defined IP (
- echo %IP%
- ) else (
- echo mac.ini文件里面没有本机对应的IP
- )
- pause
复制代码
[ 本帖最后由 Batcher 于 2008-12-5 20:04 编辑 ]
作者: lywlhs 时间: 2008-12-5 20:22
C:\Documents and Settings\user\桌面>for /F %a in ('getmac|findstr "^00-"') d
o (
set MAC=%a
goto :look
)
C:\Documents and Settings\user\桌面>(
set MAC=00-F0-3B:96-92-C7
goto :look
)
C:\Documents and Settings\user\桌面>set MAC=00-F0-3B:96-92-C7
C:\Documents and Settings\user\桌面>for /F "tokens=2 delims==" %a in ('finds
tr "00-F0-3B:96-92-C7" C:\mac.ini') do (set IP=%A )
C:\Documents and Settings\user\桌面>(set IP=%A )
C:\Documents and Settings\user\桌面>if defined IP (echo %A ) else (echo mac
.ini文件里面没有本机对应的IP )
%A
晕了。还是不行。
作者: namejm 时间: 2008-12-5 20:28
试试这个代码:- @echo off
- for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr /ic:"Physical Address"') do set str=%%i
- set var=
- for /f "tokens=2 delims==" %%i in ('findstr "%str:-=:%" c:\mac.ini') do echo %%i
- if not defined var echo 没有找到对应的IP
- pause
复制代码
若能正确显示IP,则将最后一句 echo %%i 改为 set var=%%i,就可以把变量值赋予变量var了。
作者: Batcher 时间: 2008-12-5 20:35
复制代码
结果贴出来看看?复制代码
结果贴出来看看?
作者: lywlhs 时间: 2008-12-5 20:42
C:\Documents and Settings\user\桌面>for /F "tokens=2 delims=:" %i in ('ipcon
fig /all|findstr /ic:"Physical Address"') do set str=%i
:\Documents and Settings\user\桌面>set str= 00-F0-3B:96-92-C7
C:\Documents and Settings\user\桌面>set str=
C:\Documents and Settings\user\桌面>pause
请按任意键继续. . .
我在你的代码set str= 下又加了一个pause
执行完set str=后,CMD就自动关了。
还是不行。不显示IP。你们测试了吗?我是不是那里做的不对?
[ 本帖最后由 lywlhs 于 2008-12-5 20:44 编辑 ]
作者: Batcher 时间: 2008-12-5 20:46 标题: 回复 10楼 的帖子
你的本机MAC地址很奇怪,请回答9楼问题。
作者: lywlhs 时间: 2008-12-5 20:56
ipconfig /all
Windows IP Configuration
Host Name . . . . . . . . . . . . : ly04
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : NVIDIA nForce Networking Controller
Physical Address. . . . . . . . . : 00-F0-3B-96-92-C7
Dhcp Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 192.168.0.4
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.1
DNS Servers . . . . . . . . . . . : 202.100.96.68
202.100.96.69
getmac
物理地址 传输名称
=================== ==========================================================
00-F0-3B:96-92-C7 \Device\Tcpip_{9E2AEE90-5B5C-440B-87DB-2DC55E24F3B8},
\Device\NwlnkIpx
[ 本帖最后由 lywlhs 于 2008-12-5 21:08 编辑 ]
作者: namejm 时间: 2008-12-5 21:04
00-F0-3B:96-92-C7?居然有两种连接符?真是奇怪啊——以前只见过纯短横符号连接的格式,没想到还会有冒号存在呢。不过,我在8楼的代码应该能兼容这种情况,你测试过了吗?
作者: lywlhs 时间: 2008-12-5 21:23
我真是晕。把MAC.INI里的00:F0:3B:96:92:C7改成00-F0-3B-96-92-C7
for /f "tokens=12" %%a in ('ipconfig /all^|findstr /i /c:"Physical Address"') do set Mac=%%a
for /f "tokens=2 delims==" %%b in ('more ^<c:\Mac.ini^|find /i "%Mac%"') do set IP=%%b
这样可以正确得到IP地址了。
从ipconfig /all里得到的mac是00-F0-3B-96-92-C7形式的,我真笨,把mac.ini里的:改成-就什么都结了。
谢谢各位领导了。辛苦了。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |