IP地址自动设置的批处理代码分享
批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD。这些命令统称批处理命令。
小知识:可以在键盘上按下Ctrl+C组合键来强行终止一个批处理的执行过程。
一般常规的批处理命令,按照自上而下的顺序逐行执行,也就是说,只有第一行命令执行之后,才可能执行第二行,第二行执行之后,才可以执行到第三行.....如此依次执行。那么,如果对于不同的情况,需要执行不同的既定操作,常规的执行规则显然是无法完成任务的,这种应用场景下怎么办呢?我们就需要引入流程跳转的概念,即就是动用流程跳转语句goto了。流程跳转的含义:改变默认的执行顺序,强制跳转到指定的位置执行特定的程序块。
为什么要把goto和冒号这两个命令联合起来介绍?因为它们是分不开的,无论少了哪个或多了哪个都会出错。goto是个跳转命令,紧跟其之后的是标签名;冒号是一个标签标志,紧跟其之后的是标签名,两者合称标签。当程序运行到goto时,将自动跳转到冒号定义的部分去执行(呵呵~试想一下,是不是分不开?)。goto语句与标签一一呼应,在实现流程跳转时相辅相成,缺一不可。
基础知识介绍完毕,我们来看一个IP地址自动设置的批处理的实例代码
@echooff
MODEcon:COLS=80lines=30
color0b
title自动IPByL
echo=====================
echo自动IPByL
echo=====================
remeth//eth为网卡名称
echo1.检测活动网卡...
rem获取网络连接名称
@(for/f"tokens=3*"%%ain('netshinterfaceshowinterface^|more+2')do@echo,%%b)>"network.txt"
setj=0
for/f"tokens=*"%%iin(network.txt)do(
set/aj+=1
setcon!j!=%%i
callseteth=%%con!j!%%
)
echo当前活动网卡名称为:%eth%
setipduan=149.32.49
remgw//网关
setgw=%ipduan%.1
remnetmasks//子网掩码
setnetmasks=255.255.255.0
rem最大和最小IP地址
setMAXID=205
setMINID=5
echo2.检查ID配置...
setj=0
for/f"tokens=*"%%iin(nowid.txt)do(
set/aj+=1
setcon!j!=%%i
callsetoldid=%%con!j!%%
)
if%oldid%LSS%MINID%(
echo检查nowid.txt文件,ID:%oldid%不能小于%MINID%
gotochangeerror)
echo3.生成下一个ip地址...
setj=0
for/f"tokens=*"%%iin(nowid.txt)do(
set/aj+=1
setcon!j!=%%i
callsetid=%%con!j!%%
)
echo--------
echo上一个编号为:%id%
echo上一个ip地址为:%ipduan%.%id%
echo--------
set/anewid=%id%+1
if%newid%GTR%MAXID%(
echoIP段分配已达上限:%ipduan%.%MAXID%!请重新修改nowid.txt文件或检查IP地址
gotochangeerror
)else(
echo%newid%>nowid.txt
echo下一个编号为:%newid%
)
remip//ip为你想更改的IP
setip=%ipduan%.%newid%
echo下一个ip地址:%ip%
echo下一个ip地址网关:%gw%
echo下一个ip地址掩码:%netmasks%
echo--------
echo4.本机IP更改:%ip%
rem
netshinterfaceipv4setaddress%eth%static%ip%%netmasks%%gw%
rem>nul
echo.
echo5.验证当前本机IP:
ipconfig-all>ipconfig.txt
typeipconfig.txt|find"%ip%"&&gotosuccess
:changeerror
echo修改失败,请手动分配IP地址!
goto:end
:success
echo修改成功
goto:end
:end
pause
echo.