IP绑定MAC(本机和网关)(函数版)
原理:通过专门的 pickup 函数来对 ipconfig /all的结果进行分析,提取。
优点:不产生临时文件、不使用find;
缺点:重复调用函数时会导致重复运行 ipconfig /all命令,导致效率下降- ::==================IP绑定MAC(本机和网关)==============
- ::code by youxi01@bbs.bathome.net 2008-1-6
- ::原理:通过专门的 p:PickUP 函数来对 ipconfig /all的结果进行分析,提取。
- ::优点:不产生临时文件、不使用find;可以根据p:PickUP自由提取其它数据段
- ::缺点:重复调用函数时会导致重复运行 ipconfig /all命令,导致效率下降
- @echo off & setlocal enabledelayedexpansion
- Rem '/*=============初始化定义=================*/
- title IP绑定MAC(本机和网关)@bbs.bathome.net
- Rem '/*=============读取本机的MAC地址,并保存在MAC_addr中,下类同=======*/
- call :PickUP "Physical Address" "MAC_addr"
- call :PickUP "IP Address" "IP_addr"
- arp -s %IP_addr:*:=% %MAC_addr:*:=%
- Rem '/*======获取网关IP及MAC并绑定==============*/
- call :PickUP "Default Gateway" "GW_addr"
- for /f "skip=3 tokens=2" %%i in ('arp -a %GW_addr:*:=%') do set GW_MAC=%%i
- arp -s %GW_addr:*:=% %GW_MAC%
- pause>nul
- Rem '/*=============IPconfig信息提取函数==================
- :PickUP 标志符 结果返回变量
- set "flag=%~1"
- for /f "delims=. tokens=1,*" %%i in ('ipconfig /all') do (
- Rem '/*-------下面这句的目的是为了去掉字符串两端的空格-----*/
- for /f "tokens=*" %%a in ("%%i") do set "var=%%~nxa"
- if "%flag%"=="!var!" (
- set "%~2=%%j"
- goto :eof
- )
- )
复制代码
|