自动修改本机IP地址的bat代码
代码比较多,经过毛票票小编测试,在2008r2上无法正常执行,其实bat设置ip就是几个命令,无外乎加了一些判断与获取原来网络配置的一些信息,代码越复杂越容易出问题
@echooff setlocalenabledelayedexpansion title修改本机IP地址by:小小沧海20130409 :init cls&echo——————————————自动修改本机IP地址—————————————— rem系统版本,值可为Windows7或是WindowsXP,或是auto(表示自动获取) setSYSVER=auto rem要更改的网卡名称,auto表示自动获取第一块“以太网适配器” setETH=auto remIP来源,值仅为两个static和dhcp,ques表示询问,由使用者填写 rem静态IP请填写static,从网关自动获取IP请填写dhcp setIPSOURCE=ques rem要改成的IP地址,ques同上 setIPADDR=ques rem要改成的子网掩码,ques同上 setMASK=ques rem要使用的默认网关,ques同上 setGATEWAY=ques remDNS模式,值仅为两个static和dhcp rem静态DNS请填写static,从网关自动获取DNS请填写dhcp setDNSSOURCE=ques rem要使用的首选DNS,ques同上 setDNS1=ques rem要使用的备用DNS,ques同上 setDNS2=ques setLOG=%TEMP%\changeIP_log.txt echo运行日期:%date%%time%>%LOG% :start rem===============使用者填写参数值======================= rem自动获取系统版本,结果为Windows7或是WindowsXP(只测试了这两个系统) if"%SYSVER%"=="auto"( set/p=正在自动获取系统版本...nul ) ) ) rem自动获取网卡名称 if"%ETH%"=="auto"( echo正在自动获取网络适配器信息... setindex=0 setselect=1 for/f"skip=3tokens=4*delims="%%iin('netshinterfaceipv4showinterfaces^|find/i/v"Loopback"')do( set/aindex=!index!+1 setethname=%%j echo[!index!]!ethname! ) if!index!==1( setETH=!ethname! )else(if!index!GTR1( :select set/p=请选择要设置的网卡编号: nul&exit )else( remset/p=[!ETH!] nul )) ) if/i"%IPSOURCE%"=="dhcp"gotoquesDNS if"%IPADDR%"=="ques"( echo→请填写【IP地址】^(直接回车为192.168.1.100^) set/pIPADDR= if"!IPADDR!"=="ques"setIPADDR=192.168.1.100 ) if"%MASK%"=="ques"( echo→请填写【子网掩码】^(直接回车为255.255.255.0^) set/pMASK= if"!MASK!"=="ques"setMASK=255.255.255.0 ) if"%GATEWAY%"=="ques"( echo→请填写【默认网关】^(直接回车为192.168.1.1^) set/pGATEWAY= if"!GATEWAY!"=="ques"setGATEWAY=192.168.1.1 ) :quesDNS if"%DNSSOURCE%"=="ques"( echo→请填写【DNS来源】^(值仅为两个static和dhcp,直接回车为static^) set/pDNSSOURCE= if"!DNSSOURCE!"=="ques"setDNSSOURCE=static if/i"!DNSSOURCE!"NEQ"static"(if/i"!DNSSOURCE!"NEQ"dhcp"( setDNSSOURCE=static echoDNS来源填写错误,将变更为static模式 pause>nul )) ) if/i"%DNSSOURCE%"=="dhcp"gotocheckInfo if"%DNS1%"=="ques"( echo→请填写【首选DNS地址】^(直接回车为8.8.8.8^) set/pDNS1= if"!DNS1!"=="ques"setDNS1=8.8.8.8 ) if"%DNS2%"=="ques"( echo→请填写【备用DNS地址】^(直接回车为8.8.4.4^) set/pDNS2= if"!DNS2!"=="ques"setDNS2=8.8.4.4 ) :checkInfo cls echo即将应用以下配置: call:showInfo echo请确认信息是否正确,输入Y继续,输入N退出,输入Q显示本机网络信息 setchoose=nul&set/pchoose= if/i"%choose%"=="nul"gotocheckInfo if/i"%choose%"=="N"exit if/i"%choose%"=="Q"call:getInfo&pause&gotocheckInfo if/i"%choose%"NEQ"Y"gotocheckInfo echo★注意★请关闭防火墙或允许所有弹出的安全软件提示,否则无法成功执行! :changeIP rem通过dhcp删除原有IP配置 echo→设置"%ETH%"的IP源为DHCP,以删除原有IP地址>>%LOG% netsh-cinterfaceipsetaddressname="%ETH%"source=dhcp>>%LOG% if/i"%IPSOURCE%"=="static"( echo→设置IP为"%IPADDR%",掩码为"%MASK%",网关为"%GATEWAY%">>%LOG% netsh-cinterfaceipsetaddressname="%ETH%"source=staticaddress="%IPADDR%"mask="%MASK%"gateway="%GATEWAY%"gwmetric=1>>%LOG% ) rem删除原有DNS配置 echo→删除原有DNS配置>>%LOG% netsh-cinterfaceipdeletedns"%ETH%"all>>%LOG% if/i"%DNSSOURCE%"=="static"( echo→设置首选DNS为%DNS1%>>%LOG% netsh-cinterfaceipadddnsname="%ETH%"addr="%DNS1%"index=1>>%LOG% echo→设置备用DNS为%DNS2%>>%LOG% netsh-cinterfaceipadddnsname="%ETH%"addr="%DNS2%"index=2>>%LOG% rem↑此处可继续增加多个DNS服务器地址 )else(if/i"%DNSSOURCE%"=="dhcp"( echo→设置DNS为DHCP模式>>%LOG% netsh-cinterfaceipsetdnsname="%ETH%"dhcp>>%LOG% )) :end cls remecho【要设定的信息】 remcall:showInfo echo【当前本机信息】 call:getInfo echo====================================== echo如果上下一致则说明修改成功! echo如果不一致则请查看日志文件! echo输入L查看日志文件,输入E退出程序。 setchoose=nul&set/pchoose= if/i"%choose%"=="L"start%LOG%&gotoend if/i"%choose%"=="E"exit if/i"%choose%"=="nul"gotoend echo程序执行结束,按任意键退出... pause>nul exit :showInfo echo【本机系统】:%SYSVER% echo【网卡名称】:%ETH% echo【IP来源】:%IPSOURCE% if"%IPSOURCE%"=="static"( echo【IP地址】:%IPADDR% echo【子网掩码】:%MASK% echo【默认网关】:%GATEWAY% ) echo【DNS来源】:%DNSSOURCE% if"%DNSSOURCE%"=="static"( echo【首选DNS】:%DNS1% echo【备用DNS】:%DNS2% ) remgoto:eof等于返回return goto:eof :getInfo netsh-cinterfaceipshowaddressname="%ETH%" netsh-cinterfaceipshowdnsname="%ETH%" goto:eof :windows7 ============================================== 接口"本地连接"的配置 DHCP已启用:否 IP地址:192.168.1.253 子网前缀:192.168.1.0/24(掩码255.255.255.0) 默认网关:192.168.1.1 网关跃点数:1 InterfaceMetric:20 接口"本地连接"的配置 静态配置的DNS服务器:8.8.8.8 8.8.4.4 用哪个前缀注册:只是主要
BAT批处理复杂环境下的IP地址修改设置
@echooff
modeconcols=70lines=38
colora
titleD-小苏-学习-Bat-快速修改本地IP地址
:ShowReadme
cls
echo.
echo*********************学习-Bat-快速修改本地IP地址**********************
echo.
echo实现功能(以下情况下测试通过):
echo1.多连接名称:自动获取网络连接名称
echo2.多连接属性:有线连接,无线连接,虚拟连接
echo3.多操作系统:WindowsXP,Windows7/8.1
echo4.多网络连接:无线连接2个,有线连接1个,VMware连接2个
echo5.区域的DNS:判断计算机可以连接互联网则采用当前DNS设置
echo6.空格名称:VMwareVirtualEthernetAdapterforVMnet1
echo7.优化设置:优化选择步骤,添加选择序号,保存配置内容
echo8.设置方法:可转换Netshinterfaceipset和WMICnicconfig
echo9.获取优化:判断网关值,存储有效的网关值以打开路由器设置页
echo.
echo*********************学习-Bat-快速修改本地IP地址**********************
ping-n1127.1>nul
:Set_localTemp
setlocalenabledelayedexpansion
ver|find"6.">NUL&&(cls&echo.&echo-------------------------------当前系统为Windows7以上系统&Set"WindowsVer=Windows7"&goto:Set_NetConnectionID)
cls&echo.&echo-------------------------------当前系统不是Windows7以上系统&Set"WindowsVer=WindowsXP"&goto:Set_NetConnectionID
:Set_NetConnectionID
rem获取设置网络连接名称
cls
echo.
echo*************选择网络连接名称*****************IN%WindowsVer%**********
echo.
set"str=DefaultIPGateway^,IPAddress^,DNSServerSearchOrder^,IPSubnet^,DHCPEnabled"
for/f"skip=1tokens=1*"%%iin('wmicNicwhere"Manufacturer<>'Microsoft'andNetConnectionStatus='2'"getIndex^,NetConnectionID^')do(
for/f"tokens=1*delims=:"%%jin("%%j")do(
set$%%i=%%j
Echo%%i_%%j>>适配器_Index_Name.txt
echo.
echo适配器_ID_Index:%%i
echo适配器_名_NName:%%j
for/f"tokens=1-3delims={},"%%ain('wmicNicconfigwhere"Index='%%i'"get%str%/value')do(
for/f%%cin(%%c)doif/i"%%a"=="DNSServerSearchOrder="set"DNS2=%%c"
for/f%%cin("%%a%%~b")doset"%%c"
)
if/i"!DHCPEnabled!"=="TRUE"(
echo适配器_IP_模式:自动
)elseecho适配器_IP_模式:手动
IFnotdefinedNet_IPsetNet_IP=!IPAddress!
echo适配器_IP_地址:!IPAddress!Net_IP_地址:!Net_IP!
IFnotdefinedNet_MASKsetNet_MASK=!IPSubnet!
Rem判断是否存在值,以解决之后Net_MASK赋值为空的情况,保证Net_MASK存在值
echo适配器_子网掩码:!IPSubnet!Net_子网掩码:!Net_MASK!
IFnotdefinedNet_gatewaysetNet_gateway=!DefaultIPGateway!
echo适配器_默认网关:!DefaultIPGateway!Net_默认网关:!Net_gateway!
IFnotdefinedNet_dnsPrasetNet_dnsPra=!DNSServerSearchOrder!
echo适配器_首选_DNS:!DNSServerSearchOrder!Net_首选_DNS:!Net_dnsPra!
IFdefineddns2setNet_dns2=!DNS2!&echo适配器_配用_DNS:!DNS2!Net_配用_DNS:!Net_dns2!
)
)
echo.
echo.
echo************************选择网络连接名称*****************************
(for/f"tokens=1*delims=:"%%ain('findstr/n.*适配器_Index_Name.txt')doechoID_%%a_%%b)>适配器_ID_Index_Name.txt
REM生成选择结构,添加序号ID_,避免纯查找数字序号会关键词的查找重复
for/f"tokens=2-4delims=_"%%ain(适配器_ID_Index_Name.txt)do(
setNetConID=%%a
setNetConnectionID_Index=%%b
setNetConnectionName_Index=%%c
echo适配器ID:!NetConID!标号Index:!NetConnectionID_Index!名称:!NetConnectionName_Index!
)
echo*************选择网络连接名称*****************IN%WindowsVer%***********
:Set_Net_Ask
Echo.
echo.
set/pNetConID=选择需要配置适配器对应数字ID:
if/i"%NetConID%"=="q"exit
echo.
echo.
setNetConnectionName_Index=
for/f"tokens=2-4delims=_"%%ain('findstr"ID_%NetConID%"适配器_ID_Index_Name.txt')do(
setlocalenabledelayedexpansion
setNetConnectionID_Index=%%b
setNetConnectionName_Index=%%c
echo当前选择适配器ID:!NetConID!标号Index:!NetConnectionID_Index!名称:!NetConnectionName_Index!
)
if"%NetConnectionName_Index%"==""(echo选择选项超出范畴...&ping-n3127.1>nul&gotoSet_Net_Ask)else(setnet_interface=%NetConnectionName_Index%&echo名称:!net_interface!)
ifexist适配器_Index_Name.txt(del/a/f/s/q适配器_Index_Name.txt)elseecho适配器_Index_Name.txt文件夹不存在
ifexist适配器_ID_Index_Name.txt(del/a/f/s/q适配器_ID_Index_Name.txt)elseecho适配器_ID_Index_Name.txt文件夹不存在
ping-n1127.1>nul
:Set_RamdonIP
Rem如果计算机可以连接互联网,判断网络DNS、网关是否可用,可以连接互联网则只改IP,启用当前区域DNS...
Rem获得可上网IP前三位,设置为随机IP前三位
if"%Net_IP%"==""(echo设置Net_IP&setNet_IP=192.168.1.128)
for/f"tokens=1-4delims=/."%%ain("%Net_IP%")do(setIPa_=%%a.%%b.%%c)
set/aIPb_=%random%%%255+3
set"net_IPnew=%IPa_%.%IPb_%"
echo随机IP前三位[%IPa_%]生成随机IP[%net_IPnew%]
ping127.0.0.1-n1>nul1>nul
pingwww.baidu.com&echo%errorlevel%
if%errorlevel%equ1goto:Set_Net_Set_NoHave
if%errorlevel%equ0goto:Set_Net_Set_Have
:Set_Net_Set_Have
Echo当前计算机可以连通互联网...启用当前区域DNS...
setNet_Ping=1
setNet_IP_Diy=%net_IPnew%
Rem当前IP地址
ping-n1127.0.0.1>nul
gotoDiyCHOICE
:Set_Net_Set_NoHave
Echo当前计算机无法连通互联网...
setNet_Ping=0
setNet_IP_Diy=%net_IPnew%
set"Net_MASK=255.255.255.0"
set"Net_gateway=192.168.1.1"
set"Net_dnsPra=202.100.192.68"
set"Net_dns2=202.100.199.8"
ping-n1127.0.0.1>nul
gotoDiyCHOICE
:DiyCHOICE
cls
echo.
echo****************************IP快速切换程序***************************
echo.
echo当前选择网络连接:
echoID:%NetConID%名称:%net_interface%
echo.
echo.
echo--------------1.修改为随机IP---------------------%Net_IP_Diy%
echo--------------2.设自动获取IP---------------------XXX.XXX.X.XXX
echo--------------3.手动设网关IP---------------------192.XXX.X.XXX
echo--------------4.查看网络设置---------------------%Net_IP%
echo--------------5.设置路由器页---------------------%Net_gateway%
echo.
echo--------------r.重启网卡-------------------------x.退出程序---
echo.
echo.
echo****IN%WindowsVer%*******************************ToolsByS34205****
echo.
echo.
echo.
if"%Net_Ping%"=="1"(echo当前计算机可以连接互联网,启用当前区域DNS...)else(echo当前计算机无法连接互联网,可能需要设置您区域DNS....)
echo随机的IP:[%Net_IP_Diy%]
echo子网掩码:[%Net_MASK%]
echo默认网关:[%Net_gateway%]
echo首选DNS:[%Net_dnsPra%]
IFdefineddns2echo备用DNS:[%Net_dns2%]
echo.
echo.
ping-n1127.1>nul
echo.
:Diysetchoice
set/pSetChoice_C=请输入操作:
Echo.
Echo.
IFNOT"%SetChoice_C%"==""SETSetChoice_C=%SetChoice_C:~0,1%
if/i"%SetChoice_C%"=="1"gotoStatic_ip
if/i"%SetChoice_C%"=="2"gotoDHCP_ip
if/i"%SetChoice_C%"=="3"gotoDiy_ip
if/i"%SetChoice_C%"=="4"gotoLook_ip
if/i"%SetChoice_C%"=="5"gotoSet_Moden_Web
if/i"%SetChoice_C%"=="r"gotorebootnet
if/i"%SetChoice_C%"=="x"gotoEND
echo输入的选择超出范围...
ping-n3127.1>nul
gotoDiyCHOICE
:Static_ip
echo.
echo设置随机IP:[%Net_IP_Diy%]...
REMnetshinterfaceipsetaddressname="%net_interface%"source=staticaddr=%Net_IP_Diy%mask=%net_MASK%
REMecho设置IP成功...
REMEcho设置网关...
REMnetshinterfaceipsetaddressname="%net_interface%"gateway=%Net_gateway%gwmetric=1
REMecho设置DNS...
REMnetshinterfaceipsetdnsname="%net_interface%"staticaddr=%Net_dnsPra%register=PRIMARY
REMnetshinterfaceipadddnsname="%net_interface%"addr=%Net_dns2%index=2
wmicnicconfigwhereindex=%NetConnectionID_Index%callenablestatic(%Net_IP_Diy%),(%net_MASK%)
wmicnicconfigwhereindex=%NetConnectionID_Index%callsetgateways(%Net_gateway%)
wmicnicconfigwhereindex=%NetConnectionID_Index%callsetdnsdomain(%Net_dnsPra%)
wmicnicconfigwhereindex=%NetConnectionID_Index%callSetDNSServerSearchOrder(%Net_dns2%)
gotoSet_IP_Done
:DHCP_ip
echo.
echo正在设置IP为自动获取,请等待...
REMecho设置IP中...
REMnetshinterfaceipsetaddressname="%net_interface%"source=dhcp
REMecho设置网关成功...设置DNS中...
REMnetshinterfaceipsetdns"%net_interface%"source=dhcp
wmicpathWin32_NetworkAdapterConfiguration.index=%NetConnectionID_Index%callenabledhcp
wmicpathWin32_NetworkAdapterConfiguration.index=%NetConnectionID_Index%callSetDNSServerSearchOrder()
gotoSet_IP_Done
:Diy_ip
set/pNet_IP_Diy=请输入IP地址XXX.XXX.XXX.XXX:
set/pNet_gateway=请输入网关地址XXX.XXX.XXX.XXX:
set/pNet_dnsPra=请输入主dns地址XXX.XXX.XXX.XXX:
REMnetshinterfaceipsetaddressname="%net_interface%"source=staticaddr=%Net_IP_Diy%mask=255.255.255.0
REMnetshinterfaceipsetaddressname="%net_interface%"gateway=%Net_gateway%gwmetric=0
REMnetshinterfaceipsetdnsname="%net_interface%"source=staticaddr=%Net_dnsPra%register=PRIMARY
wmicnicconfigwhereindex=%NetConnectionID_Index%callenablestatic(%Net_IP_Diy%),(%net_MASK%)
wmicnicconfigwhereindex=%NetConnectionID_Index%callsetgateways(%Net_gateway%)
wmicnicconfigwhereindex=%NetConnectionID_Index%callsetdnsdomain(%Net_dnsPra%)
wmicnicconfigwhereindex=%NetConnectionID_Index%callSetDNSServerSearchOrder(%Net_dns2%)
gotoSet_IP_Done
:Look_ip
Echo.
if"%LookNum%"=="2"(
Echo打开:控制面板-网络连接...
ping-n1127.1>nul
startcontrolncpa.cpl
Echo说明:开启环境延迟第二次Bat运行适配器属性不会改变,所以第二次次信息查看需要手动查看属性...&Echo.
echo,前次%net_interface%地址的IP:%IPAddress%&echo,前次%net_interface%子网掩码:%IPSubnet%&echo,前次%net_interface%默认网关:%DefaultIPGateway%
ping-n6127.1>nul&gotoSet_IP_Done
)
setLookNum=1
set/aLookNum+=1
Echo查看网络连接%net_interface%的属性:
set"w1=wmicnicwhere"NetConnectionID="%net_interface%""getIndex"
for/f%%ain('%w1%^|findstr/b[0-9]')doset"n=%%a"
set"w2=wmicnicconfigwhere"Index='%n%'"getDefaultIPGateway^,IPAddress^,IPSubnet"
for/ftokens^=1-2delims^={^"%%ain('%w2%/value^|find"."')doset"%%a%%b"
echo,%net_interface%地址的IP:%IPAddress%
echo,%net_interface%子网掩码:%IPSubnet%
echo,%net_interface%默认网关:%DefaultIPGateway%
ping-n6127.1>nul
gotoSet_IP_Done
:rebootnet
echo重启网卡中...请稍等...
ping-n3127.1>nul
netshinterfacesetinterface"%net_interface%"disabled
netshinterfacesetinterface"%net_interface%"enable
gotoSet_IP_Done
:Set_Moden_Web
Echo需要修改%net_interface%IP为网关地址段[%Net_gateway%]...
set/pSetChoice_Web=是(1)否(2)返回(3):
Echo.
IFNOT"%SetChoice_Web%"==""SETSetChoice_Web=%SetChoice_Web:~0,1%
if/i"%SetChoice_Web%"=="1"gotoSet_web_ip
if/i"%SetChoice_Web%"=="2"gotoSet_no_web_ip
if/i"%SetChoice_Web%"=="2"gotoDiyCHOICE
echo输入的选择超出范围...
ping-n3127.1>nul
goto:Set_Moden_Web
:Set_web_ip
Rem获得网关前三位,设置为IP前三位,如果不存在则创建
if"%Net_gateway%"==""(echo设置Net_gateway&setNet_gateway=192.168.1.1)
for/f"tokens=1-4delims=/."%%ain("%Net_gateway%")do(setSet_web_IPa_=%%a.%%b.%%c)
set/aSet_web_IPb_=%random%%%255+3
set"Set_web_net_IPnew=%Set_web_IPa_%.%Set_web_IPb_%"
echoIP前三位:%Set_web_IPa_%后一位:%Set_web_IPb_%
echo正在设置%net_interface%为网关IP[%Set_web_net_IPnew%]......
wmicnicconfigwhereindex=%NetConnectionID_Index%callenablestatic(%Set_web_net_IPnew%),(%net_MASK%)
echo已经设置%net_interface%为网关IP[%Set_web_net_IPnew%]......
goto:Set_no_web_ip
:Set_no_web_ip
Echo当前网关为:%Net_gateway%,正在打开http://%Net_gateway%....
ping%Net_gateway%>nul
start"%programfiles%\InternetExplorer\iexplore"http://%Net_gateway%
ping-n3127.1>nul
goto:Set_IP_Done
:Set_IP_Done
echo.
echoOK,设置完成...
ping-n1127.1>nul
echoOK,任务完成,返回选择菜单...
ping-n1127.1>nul
GOTODiyCHOICE
:end
echo**********************退出......................*********************
Endlocal
ping-n3127.1>nul
exit
继续分享一个
@echooff
for/f"delims="%%ain('wmicNICwhere"NetEnabled='TRUE'"getMACAddress^,NetConnectionID/value^|find"="')doset%%a
for/f"delims="%%ain('wmicNICCONFIGwhere"MACAddress='%MACAddress%'"getIPAddress/value^|find"="')doset%%a
for/f"delims={,"%%ain("%IPAddress%")dosetip=%%~a
for/f"tokens=1-4delims=."%%ain("%ip%")dosetlast=%%d
echo;%ip%
echo;%last%
echo;%NetConnectionID%
netshinterfaceipv4setaddressname="本地连接"addr=192.168.1.%last%mask=255.255.255.0gwmetric=30
netshinterfaceipv4addaddressname="本地连接"addr=192.168.2.%last%mask=255.255.255.0gateway=192.168.2.1gwmetric=1
exit
如果是小编自己用的话直接用
netshinterfaceipv4addaddressname="本地连接"addr=192.168.2.8mask=255.255.255.0gateway=192.168.2.1gwmetric=1
需要事先把这些ip、子网掩码、网关设置好,执行运行就可以了,方便粗暴。