您现在的位置是:网站首页> 编程资料编程资料
自动修改本机IP地址的bat代码_DOS/BAT_
2023-05-25
281人已围观
简介 自动修改本机IP地址的bat代码_DOS/BAT_
代码比较多,经过小编测试,在2008 r2上无法正常执行,其实bat设置ip就是几个命令,无外乎加了一些判断与获取原来网络配置的一些信息,代码越复杂越容易出问题
@echo off setlocal enabledelayedexpansion title 修改本机IP地址 by:小小沧海20130409 :init cls&echo ——————————————自动修改本机IP地址—————————————— rem 系统版本,值可为Windows7或是WindowsXP,或是auto(表示自动获取) set SYSVER=auto rem 要更改的网卡名称,auto表示自动获取第一块“以太网适配器” set ETH=auto rem IP来源,值仅为两个static和dhcp,ques表示询问,由使用者填写 rem 静态IP请填写static,从网关自动获取IP请填写dhcp set IPSOURCE=ques rem 要改成的IP地址,ques同上 set IPADDR=ques rem 要改成的子网掩码,ques同上 set MASK=ques rem 要使用的默认网关,ques同上 set GATEWAY=ques rem DNS模式,值仅为两个static和dhcp rem 静态DNS请填写static,从网关自动获取DNS请填写dhcp set DNSSOURCE=ques rem 要使用的首选DNS,ques同上 set DNS1=ques rem 要使用的备用DNS,ques同上 set DNS2=ques set LOG=%TEMP%\changeIP_log.txt echo 运行日期:%date% %time%>%LOG% :start rem ===============使用者填写参数值======================= rem 自动获取系统版本,结果为 Windows7 或是 WindowsXP(只测试了这两个系统) if "%SYSVER%"=="auto" ( set /p=正在自动获取系统版本...nul ) ) ) rem 自动获取网卡名称 if "%ETH%"=="auto" ( echo 正在自动获取网络适配器信息... set index=0 set select=1 for /f "skip=3 tokens=4* delims= " %%i in ('netsh interface ipv4 show interfaces^|find /i /v "Loopback"') do ( set /a index=!index!+1 set ethname=%%j echo [!index!]!ethname! ) if !index!==1 ( set ETH=!ethname! ) else ( if !index! GTR 1 ( :select set /p=请选择要设置的网卡编号: nul&exit ) else ( rem set/p=[!ETH!] nul )) ) if /i "%IPSOURCE%"=="dhcp" goto quesDNS if "%IPADDR%"=="ques" ( echo →请填写【IP地址】^(直接回车为192.168.1.100^) set /p IPADDR= if "!IPADDR!"=="ques" set IPADDR=192.168.1.100 ) if "%MASK%"=="ques" ( echo →请填写【子网掩码】^(直接回车为255.255.255.0^) set /p MASK= if "!MASK!"=="ques" set MASK=255.255.255.0 ) if "%GATEWAY%"=="ques" ( echo →请填写【默认网关】^(直接回车为192.168.1.1^) set /p GATEWAY= if "!GATEWAY!"=="ques" set GATEWAY=192.168.1.1 ) :quesDNS if "%DNSSOURCE%"=="ques" ( echo →请填写【DNS来源】^(值仅为两个static和dhcp,直接回车为static^) set /p DNSSOURCE= if "!DNSSOURCE!"=="ques" set DNSSOURCE=static if /i "!DNSSOURCE!" NEQ "static" (if /i "!DNSSOURCE!" NEQ "dhcp" ( set DNSSOURCE=static echo DNS来源填写错误,将变更为static模式 pause>nul )) ) if /i "%DNSSOURCE%"=="dhcp" goto checkInfo if "%DNS1%"=="ques" ( echo →请填写【首选DNS地址】^(直接回车为8.8.8.8^) set /p DNS1= if "!DNS1!"=="ques" set DNS1=8.8.8.8 ) if "%DNS2%"=="ques" ( echo →请填写【备用DNS地址】^(直接回车为8.8.4.4^) set /p DNS2= if "!DNS2!"=="ques" set DNS2=8.8.4.4 ) :checkInfo cls echo 即将应用以下配置: call :showInfo echo 请确认信息是否正确,输入Y继续,输入N退出,输入Q显示本机网络信息 set choose=nul&set /p choose= if /i "%choose%"=="nul" goto checkInfo if /i "%choose%"=="N" exit if /i "%choose%"=="Q" call :getInfo & pause & goto checkInfo if /i "%choose%" NEQ "Y" goto checkInfo echo ★注意★请关闭防火墙或允许所有弹出的安全软件提示,否则无法成功执行! :changeIP rem 通过dhcp删除原有IP配置 echo →设置"%ETH%"的IP源为DHCP,以删除原有IP地址 >>%LOG% netsh -c interface ip set address name="%ETH%" source=dhcp >>%LOG% if /i "%IPSOURCE%"=="static" ( echo →设置IP为"%IPADDR%",掩码为"%MASK%",网关为"%GATEWAY%" >>%LOG% netsh -c interface ip set address name="%ETH%" source=static address="%IPADDR%" mask="%MASK%" gateway="%GATEWAY%" gwmetric=1 >>%LOG% ) rem 删除原有DNS配置 echo →删除原有DNS配置 >>%LOG% netsh -c interface ip delete dns "%ETH%" all >>%LOG% if /i "%DNSSOURCE%"=="static" ( echo →设置首选DNS为%DNS1% >>%LOG% netsh -c interface ip add dns name="%ETH%" addr="%DNS1%" index=1 >>%LOG% echo →设置备用DNS为%DNS2% >>%LOG% netsh -c interface ip add dns name="%ETH%" addr="%DNS2%" index=2 >>%LOG% rem ↑此处可继续增加多个DNS服务器地址 ) else (if /i "%DNSSOURCE%"=="dhcp" ( echo →设置DNS为DHCP模式 >>%LOG% netsh -c interface ip set dns name="%ETH%" dhcp >>%LOG% )) :end cls rem echo 【要设定的信息】 rem call :showInfo echo 【当前本机信息】 call :getInfo echo ====================================== echo 如果上下一致则说明修改成功! echo 如果不一致则请查看日志文件! echo 输入L查看日志文件,输入E退出程序。 set choose=nul&set /p choose= if /i "%choose%"=="L" start %LOG%&goto end if /i "%choose%"=="E" exit if /i "%choose%"=="nul" goto end 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% ) rem goto :eof等于返回return goto :eof :getInfo netsh -c interface ip show address name="%ETH%" netsh -c interface ip show dns name="%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地址修改设置
@echo off mode con cols=70 lines=38 color a title D-小苏-学习-Bat-快速修改本地IP地址 :ShowReadme cls echo. echo *********************学习-Bat-快速修改本地IP地址********************** echo. echo 实现功能(以下情况下测试通过): echo 1.多连接名称:自动获取网络连接名称 echo 2.多连接属性:有线连接,无线连接,虚拟连接 echo 3.多操作系统:Windows XP,Windows 7 / 8.1 echo 4.多网络连接:无线连接2个,有线连接1个,VMware连接2个 echo 5.区域的DNS:判断计算机可以连接互联网则采用当前DNS设置 echo 6.空格名称:VMware Virtual Ethernet Adapter for VMnet1 echo 7.优化设置:优化选择步骤,添加选择序号,保存配置内容 echo 8.设置方法:可转换Netsh interface ip set 和WMIC nicconfig echo 9.获取优化:判断网关值,存储有效的网关值以打开路由器设置页 echo. echo *********************学习-Bat-快速修改本地IP地址********************** ping -n 1 127.1 >nul :Set_localTemp setlocal enabledelayedexpansion ver | find "6." > NUL &&(cls&echo. &echo -------------------------------当前系统为 Windows 7以上系统 &Set "WindowsVer=Windows 7" &goto :Set_NetConnectionID) cls&echo. &echo -------------------------------当前系统不是 Windows 7以上系统 &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*" %%i in ('wmic Nic where "Manufacturer<>'Microsoft' and NetConnectionStatus='2'" get Index^,NetConnectionID^') do ( for /f "tokens=1* delims=:" %%j in ("%%j") do ( set $%%i=%%j Echo %%i_%%j>>适配器_Index_Name.txt echo. echo 适配器_ID_Index: %%i echo 适配器_名_NName: %%j for /f "tokens=1-3delims={}," %%a in ('wmic Nicconfig where "Index='%%i'" get %str% /value') do ( for /f %%c in (%%c) do if /i "%%a" == "DNSServerSearchOrder=" set "DNS2=%%c" for /f %%c in ("%%a%%~b") do set "%%c" ) if /i "!DHCPEnabled!" == "TRUE" ( echo 适配器_IP_模式 : 自动 ) else echo 适配器_IP_模式 : 手动 IF not defined Net_IP set Net_IP=!IPAddress! echo 适配器_IP_地址 : !IPAddress! Net_IP_地址 : !Net_IP! IF not defined Net_MASK set Net_MASK=!IPSubnet! Rem 判断是否存在值,以解决之后Net_MASK赋值为空的情况,保证Net_MASK存在值 echo 适配器_子网掩码: !IPSubnet! Net_子网掩码: !Net_MASK! IF not defined Net_gateway set Net_gateway=!DefaultIPGateway! echo 适配器_默认网关: !DefaultIPGateway! Net_默认网关: !Net_gateway! IF not defined Net_dnsPra set Net_dnsPra=!DNSServerSearchOrder! echo 适配器_首选_DNS: !DNSServerSearchOrder! Net_首选_DNS: !Net_dnsPra! IF defined dns2 set Net_dns2=!DNS2! &echo 适配器_配用_DNS :!DNS2! Net_配用_DNS: !Net_dns2! ) ) echo. echo. echo ************************选择网络连接名称***************************** (for /f "tokens=1* delims=:" %%a in ('findstr /n .* 适配器_Index_Name.txt') do echo ID_%%a_%%b)>适配器_ID_Index_Name.txt REM 生成选择结构,添加序号ID_,避免纯查找数字序号会关键词的查找重复 for /f "tokens=2-4 delims=_" %%a in (适配器_ID_Index_Name.txt) do ( set NetConID=%%a set NetConnectionID_Index=%%b set NetConnectionName_Index=%%c echo 适配器ID:!NetConID! 标号Index:!NetConnectionID_Index! 名称:!NetConnectionName_Index! ) echo *************选择网络连接名称*****************IN %WindowsVer%*********** :Set_Net_Ask Echo. echo. set /p NetConID=选择需要配置 适配器 对应 数字ID : if /i "%NetConID%" == "q" exit echo. echo. set NetConnectionName_Index= for /f "tokens=2-4 delims=_" %%a in ('findstr "ID_%NetConID%" 适配器_ID_Index_Name.txt') do ( setlocal enabledelayedexpansion set NetConnectionID_Index=%%b set NetConnectionName_Index=%%c echo 当前选择适配器ID:!NetConID! 标号Index:!NetConnectionID_Index! 名称:!NetConnectionName_Index! ) if "%NetConnectionName_Index%" == "" (echo 选择选项超出范畴 ... &ping -n 3 127.1>nul &goto Set_Net_Ask) else (set net_interface=%NetConnectionName_Index% &echo 名称:!net_interface! ) if exist 适配器_Index_Name.txt (del /a /f /s /q 适配器_Index_Name.txt) else echo 适配器_Index_Name.txt文件夹不存在 if exist 适配器_ID_Index_Name.txt (del /a /f /s /q 适配器_ID_Index_Name.txt) else echo 适配器_ID_Index_Name.txt文件夹不存在 ping -n 1 127.1>nul :Set_RamdonIP Rem 如果计算机可以连接互联网,判断网络DNS、网关是否可用,可以连接互联网则只改IP,启用当前区域DNS... Rem 获得可上网IP前三位,设置为随机IP前三位 if "%Net_IP%" == "" (echo 设置Net_IP &set Net_IP=192.168.1.128) for /f "tokens=1-4 delims=/." %%a in ("%Net_IP%") do (set IPa_=%%a.%%b.%%c) set /a IPb_=%random%%%255+3 set "net_IPnew=%IPa_%.%IPb_%" echo 随机IP前三位[%IPa_%] 生成随机IP [%net_IPnew%] ping 127.0.0.1 -n 1 >nul 1>nul ping www.baidu.com &echo %errorlevel% if %errorlevel% equ 1 goto:Set_Net_Set_NoHave if %errorlevel% equ 0 goto:Set_Net_Set_Have :Set_Net_Set_Have Echo 当前计算机可以连通互联网...启用当前区域DNS... set Net_Ping=1 set Net_IP_Diy=%net_IPnew% Rem 当前IP地址 ping -n 1 127.0.0.1>nul goto DiyCHOICE :Set_Net_Set_NoHave Echo 当前计算机无法连通互联网... set Net_Ping=0 set Net_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 -n 1 127.0.0.1>nul goto DiyCHOICE :DiyCHOICE cls echo. echo ***********
相关内容
- 批处理(bat)获取指定目录下的所有文件列表_DOS/BAT_
- bat 批量提取指定目录下的文件名_DOS/BAT_
- 批处理闪退、运行中断等问题的处理方法_DOS/BAT_
- dos之net创建管理员用户的实现_DOS/BAT_
- IP地址自动设置的批处理代码分享_DOS/BAT_
- DOS的重定向命令使用方法以及在安全方面的应用_DOS/BAT_
- Windows下使用批处理文件.bat删除旧文件_DOS/BAT_
- DOS批处理不支持将UNC 路径作为当前目录的解决方法_DOS/BAT_
- 通过批处理关闭135 137 445等端口的实现代码(勒索病毒)_DOS/BAT_
- Windows CMD命令大全(值得收藏)_DOS/BAT_
点击排行
本栏推荐
