动态绑定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
不是很熟悉批处理命令,用了一个很笨的方法。
新博客
吾辈有待提高呀。。。
整了半天发现在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
不是很熟悉批处理命令,用了一个很笨的方法。
新博客
相关文章推荐
- Win7 VS2010下开发的CS软件,安装到XP下无法运行或者桌面快捷方式无法显示图标的问题解决方法
- 自动绑定IP和MAC地址的批处理
- WIN7绑定ip与mac地址(转)
- 十年总结(12):软件开发思想之争 - RUP VS XP
- 软件复用与敏捷开发思想指导的MIS开发
- 十年总结(12):软件开发思想之争 - RUP VS XP
- Win7绑定网关IP和MAC地址时显示“ARP项添加失败:拒绝访问”的解决办法
- win7下绑定IP和MAC地址,提示ARP项添加失败,拒绝访问
- ASP.NET AJAX客户端编程之旅(五)——以组件的思想开发Ajax应用:行为、绑定及xml-script
- 5年前给我职业生涯带来重大影响力的开发架构、开发思想(软件分层架构、UML的重要性)
- iOS应用软件开发基础——第一课_软件开发思想
- Win7可用的笔记本电池校正软件( 64、32位)
- C# 获取CPU序列号、网卡MAC地址、硬盘序列号封装类,用于软件绑定电脑
- 多年不断折腾下来,管理类软件的固定的开发思想形成讲解
- 三维软件开发笔记---调错DataGrid控件数据绑定无法显示问题
- 新装win7,之前xp哪些程序可用 测试
- C# 获取CPU序列号、网卡MAC地址、硬盘序列号封装类,用于软件绑定电脑
- Cisco交换机中如何绑定IP与MAC地址
- Web开发的那点事--软件复用
- 花生壳域名绑定动态ip注意事项