[批处理]自动修改本机IP地址

前言

抱着笔记本经常到处跑的人,今天回宿舍上网,明天去机房上网,后面去办公室上网,每到一个地方,都要更换一次IP网关掩码

如果都是DHCP还好,关键是为了组织为了方便管理这些地方都是使用的静态IP,所以每次换一个地方上网就要重新填写一次IP设置,很麻烦

所以就做了一个这么个玩意, 初次填写好后可以随意切换IP,如果不填写任何项,也可以当做IP设置向导程序

使用方式1-直接设定

写好配置,每次换地方直接运行即可切换

下载后右键cmd文件选择“编辑”记事本打开,请按照如下格式填写:




填写好多个版本后,换了上网环境直接运行



输入Y回车确认修改




修改过程中出现的安全软件提示框必须都允许,否则无法将无法修改!



使用方式2-启用设定向导

不修改,直接运行,为设置本机IP向导

源码下载

代码已托管至Github:

https://github.com/xxcanghai/cnblogsFiles/blob/master/自动修改本机IP地址.bat

批处理代码,保存至bat文件运行即可:

@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
    for /f "skip=1 tokens=2-3 delims= " %%i in ('wmic os get caption') do set SYSVER=%%i%%j
    if /i "!SYSVER!"=="Windows7" (
        echo 成功![Win7]
    ) else (
        if /i "!SYSVER!"=="WindowsXP" (
            echo 成功![WinXP]
        ) else (
            echo [!SYSVER!]
            echo 【注意】非Win7和XP系统不保证能执行成功!&pause>nul
        )
    )
)

rem 自动获取网卡名称
if "%ETH%"=="auto" (
    set /p=正在自动获取网络适配器信息...<nul
    set index=0
    if /i "%SYSVER%"=="Windows7" (
        set findstr="以太网适配器 "
        for /f "tokens=1*" %%i in ('ipconfig /all^|find /i !findstr!') do (
            if !index!==0 set ethname=%%j
            set /a index=!index!+1
        )
    ) else (if /i "%SYSVER%"=="WindowsXP" (
        set findstr="Ethernet adapter "
        for /f "tokens=2*" %%i in ('ipconfig /all^|find /i !findstr!') do (
            if !index!==0 set ethname=%%j
            set /a index=!index!+1
        )
     ))
    rem 删除网卡名称后面的冒号。 
    for /f "tokens=1* delims=:" %%i in ("!ethname!") do set ETH=%%i
    if "!ETH!"=="auto" (
        echo.&echo 自动获取网卡名称失败,请右键编辑本批处理,手动填写网卡名称!&pause>nul&exit
    ) else (
        set/p=[!ETH!]<nul
        echo 成功!
    )
)

:quesIP
if "%IPSOURCE%"=="ques" (
    echo →请填写【IP地址来源】^(值仅为两个static和dhcp,直接回车为static^)
    set /p IPSOURCE=
    if "!IPSOURCE!"=="ques" set IPSOURCE=static
    if /i "!IPSOURCE!" NEQ "static" (if /i "!IPSOURCE!" NEQ "dhcp" (
        set IPSOURCE=static
        echo IP来源填写错误,将变更为static模式
        pause>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
   用哪个前缀注册:                   只是主要
View Code

——原文发表于2013-10-28 13:56

原文地址:https://www.cnblogs.com/xxcanghai/p/4584164.html