您的位置:首页 > 其它

动态绑定ip和mac地址的批处理 xp和win7可用(软件开发的复用思想)

2010-06-25 15:28 501 查看
米老师给了一个批处理文件,很简单,经过我们改编成为现在这样可以在win7和xp下都可用的批处理。虽然段代码挺简单,但是却体现了软件开发的重要思想——复用!!

吾辈有待提高呀。。。

整了半天发现在if 和else中,不能说使用set命令。只好用goto了,并且win7下不能用arp -s命令绑定,需要用高级的绑定命令



@echo off

if exist ipconfig.txt del ipconfig.txt

ipconfig /all >ipconfig.txt

setlocal enabledelayedexpansion

if exist phyaddr.txt del phyaddr.txt

rem 查找指定行

set n=0

for /f "tokens=*" %%i in (ipconfig.txt) do (

set /a n+=1

if !n! equ 10 echo %%i>>phyaddr.txt

)

for /f "tokens=1" %%C in (phyaddr.txt) do set Cont=%%C

if %Cont%==物理地址. (

echo win7

goto win7

) else (

echo xp

goto winxp

)

:win7

if exist phyaddr.txt del phyaddr.txt

rem 查找指定行

set n=0

for /f "tokens=*" %%i in (ipconfig.txt) do (

set /a n+=1

if !n! equ 10 echo %%i>>phyaddr.txt

)

rem 找到本地的mac地址,给变量mac赋值

for /f "tokens=15" %%M in (phyaddr.txt) do set Mac=%%M

if exist IPAddr.txt del IPaddr.txt

find "IPv4 地址" ipconfig.txt >IPAddr.txt

rem 找到本地的ip

for /f "skip=2 tokens=16" %%I in (IPAddr.txt) do set IP=%%I

set var=%IP:~0,14%

::@echo on

arp -s %var% %Mac%

if exist GateIP.txt del GateIP.txt

find "默认网关" ipconfig.txt >GateIP.txt

rem 找到网关的ip

for /f "skip=2 tokens=15" %%G in (GateIP.txt) do set GateIP=%%G

if exist GateMac.txt del GateMac.txt

arp -a %GateIP% >GateMac.txt

rem 找到网关的mac地址

for /f "skip=3 tokens=2" %%H in (GateMac.txt) do set GateMac=%%H

netsh interface ipv4 show neighbors >ipv4.txt

set n=0

for /f "tokens=*" %%i in (ipv4.txt) do (

set /a n+=1

if !n! equ 1 echo %%i>>ipv4.txt

)

for /f "tokens=2" %%C in (ipv4.txt) do set ContD=%%C

set varD=%ContD:~0,2%

netsh interface ipv4 set neighbors %varD% %GateIP% %GateMac%

pause

if exist ipconfig.txt del ipconfig.txt

if exist phyaddr.txt del phyaddr.txt

if exist IPAddr.txt del IPAddr.txt

if exist GateMac.txt del GateMac.txt

if exist GateIP.txt del GateIP.txt

if exist ipv4.txt del ipv4.txt

exit

:winxp

echo 执行xp

if exist ipconfig.txt del ipconfig.txt

ipconfig /all >ipconfig.txt

if exist phyaddr.txt del phyaddr.txt

find "Physical Address" ipconfig.txt >phyaddr.txt

for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set Mac=%%M

if exist IPAddr.txt del IPaddr.txt

find "IP Address" ipconfig.txt >IPAddr.txt

for /f "skip=2 tokens=15" %%I in (IPAddr.txt) do set IP=%%I

::@echo on

arp -s %IP% %Mac%

if exist GateIP.txt del GateIP.txt

find "Default Gateway" ipconfig.txt >GateIP.txt

for /f "skip=2 tokens=13" %%G in (GateIP.txt) do set GateIP=%%G

if exist GateMac.txt del GateMac.txt

arp -a %GateIP% >GateMac.txt

for /f "skip=3 tokens=2" %%H in (GateMac.txt) do set GateMac=%%H

arp -s %GateIP% %GateMac%

if exist ipconfig.txt del ipconfig.txt

if exist phyaddr.txt del phyaddr.txt

if exist IPAddr.txt del IPAddr.txt

if exist GateMac.txt del GateMac.txt

if exist GateIP.txt del GateIP.txt

exit



不是很熟悉批处理命令,用了一个很笨的方法。



新博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: