Windows一键设置Windows系统中无线网络(WLAN)和本地连接(以太网)的IP地址配置

Windows一键设置Windows系统中无线网络(WLAN)和本地连接(以太网)的IP地址配置

主要功能:设置静态IP:为选定的适配器配置静态IP地址;设置DHCP:将适配器恢复为自动获取IP设置;恢复备份:从历史备份中恢复网络配置;自动备份:每次修改配置前自动备份当前设置。

提示:首次运行时需要管理员权限;备份文件保存在脚本同目录的 network_backup 文件夹;输入参数时直接回车使用默认值;恢复备份时选择文件名包含适配器名称和时间戳的文件

@echo off
setlocal enabledelayedexpansion

REM =============================================
REM 网络配置工具 v2.0
REM 功能:
REM 1. 动态识别系统网络适配器
REM 2. 备份/恢复网络配置
REM 3. 灵活设置静态IP或DHCP
REM 4. 支持自定义网络参数
REM =============================================

REM --- 请求管理员权限 ---
>nul 2>&1 "%%SYSTEMROOT%%\system32\cacls.exe" "%%SYSTEMROOT%%\system32\config\system"
if '%%errorlevel%%' NEQ '0' (
    echo 请求管理员权限...
    powershell -Command "Start-Process '%%~0' -Verb RunAs"
    exit /b
)

REM --- 创建备份目录 ---
if not exist "network_backup" mkdir network_backup

:MAIN_MENU
cls
echo.
echo     ********************************************
echo     *          网络配置管理工具 v2.0           *
echo     ********************************************
echo     *                                          *
echo     *  1. 设置静态IP地址                       *
echo     *  2. 设置DHCP自动获取                     *
echo     *  3. 恢复备份的网络配置                   *
echo     *  4. 退出                                *
echo     *                                          *
echo     ********************************************
echo.
set /p choice="请选择操作 [1-4]: "

if "%%choice%%"=="1" goto SET_STATIC_IP
if "%%choice%%"=="2" goto SET_DHCP
if "%%choice%%"=="3" goto RESTORE_CONFIG
if "%%choice%%"=="4" exit
echo 无效选择,请重新输入
timeout /t 2 >nul
goto MAIN_MENU

:SET_STATIC_IP
call :SELECT_ADAPTER
if "%%selected_adapter%%"=="" goto MAIN_MENU

REM --- 备份当前配置 ---
call :BACKUP_CONFIG "%%selected_adapter%%"

REM --- 获取用户输入 ---
echo.
echo 请输入网络参数(直接回车使用默认值)
echo.
set /p ip=IP地址 (默认 192.168.2.100): 
set /p mask=子网掩码 (默认 255.255.255.0): 
set /p gateway=网关 (默认 192.168.2.1): 
set /p dns1=首选DNS (默认 223.5.5.5): 
set /p dns2=备用DNS (默认 114.114.114.114): 

if "%%ip%%"=="" set ip=192.168.2.100
if "%%mask%%"=="" set mask=255.255.255.0
if "%%gateway%%"=="" set gateway=192.168.2.1
if "%%dns1%%"=="" set dns1=223.5.5.5
if "%%dns2%%"=="" set dns2=114.114.114.114

REM --- 应用设置 ---
cls
echo.
echo 正在设置适配器: !selected_adapter!
echo IP地址: %%ip%%
echo 子网掩码: %%mask%%
echo 网关: %%gateway%%
echo 首选DNS: %%dns1%%
echo 备用DNS: %%dns2%%
echo.

netsh interface ip set address name="!selected_adapter!" static %%ip%% %%mask%% %%gateway%% 1
netsh interface ip set dns name="!selected_adapter!" static %%dns1%%
netsh interface ip add dns name="!selected_adapter!" %%dns2%% index=2

echo 设置完成!
echo 配置已备份到: !backup_file!
echo.
pause
goto MAIN_MENU

:SET_DHCP
call :SELECT_ADAPTER
if "%%selected_adapter%%"=="" goto MAIN_MENU

REM --- 备份当前配置 ---
call :BACKUP_CONFIG "%%selected_adapter%%"

REM --- 设置DHCP ---
cls
echo.
echo 正在设置适配器: !selected_adapter! 使用DHCP
echo.

netsh interface ip set address name="!selected_adapter!" source=dhcp
netsh interface ip set dns name="!selected_adapter!" source=dhcp

echo DHCP设置完成!
echo 原配置已备份到: !backup_file!
echo.
pause
goto MAIN_MENU

:RESTORE_CONFIG
cls
echo.
echo 可用的备份文件:
echo ====================================

set count=0
for /f "delims=" %%%%f in ('dir /b network_backup\*.bak') do (
    set /a count+=1
    set "file!count!=%%%%f"
    echo !count!. %%%%f
)

if %%count%% EQU 0 (
    echo 没有找到备份文件!
    pause
    goto MAIN_MENU
)

echo.
set /p backup_choice="请选择要恢复的备份 [1-%%count%%]: "

if not defined file%%backup_choice%% (
    echo 无效选择!
    timeout /t 2 >nul
    goto RESTORE_CONFIG
)

set "backup_file=network_backup\!file%%backup_choice%%!"

REM --- 从备份恢复 ---
echo.
echo 正在从备份恢复配置: !backup_file!
echo.

for /f "usebackq tokens=1,2 delims==" %%%%a in ("!backup_file!") do (
    if "%%%%a"=="adapter" set adapter=%%%%b
    if "%%%%a"=="ip" set ip=%%%%b
    if "%%%%a"=="mask" set mask=%%%%b
    if "%%%%a"=="gateway" set gateway=%%%%b
    if "%%%%a"=="dns1" set dns1=%%%%b
    if "%%%%a"=="dns2" set dns2=%%%%b
    if "%%%%a"=="config_type" set config_type=%%%%b
)

if "%%config_type%%"=="static" (
    echo 恢复静态IP配置...
    netsh interface ip set address name="%%adapter%%" static %%ip%% %%mask%% %%gateway%% 1
    netsh interface ip set dns name="%%adapter%%" static %%dns1%%
    netsh interface ip add dns name="%%adapter%%" %%dns2%% index=2
) else (
    echo 恢复DHCP配置...
    netsh interface ip set address name="%%adapter%%" source=dhcp
    netsh interface ip set dns name="%%adapter%%" source=dhcp
)

echo 配置恢复完成!
echo.
pause
goto MAIN_MENU

:SELECT_ADAPTER
cls
echo.
echo 请选择网络适配器:
echo ====================================

set count=0
for /f "tokens=3*" %%%%a in ('netsh interface show interface ^| findstr "Connected"') do (
    set /a count+=1
    set "adapter!count!=%%%%b"
    echo !count!. %%%%b
)

if %%count%% EQU 0 (
    echo 未找到活动的网络适配器!
    pause
    set selected_adapter=
    goto :eof
)

echo.
set /p adapter_choice="请选择适配器 [1-%%count%%]: "

if not defined adapter%%adapter_choice%% (
    echo 无效选择!
    timeout /t 2 >nul
    goto SELECT_ADAPTER
)

set "selected_adapter=!adapter%%adapter_choice%%!"
goto :eof

:BACKUP_CONFIG
set backup_adapter=%%~1

REM --- 生成备份文件名 ---
set "timestamp=%%date:~-4%%%%date:~-7,2%%%%date:~-10,2%%_%%time:~0,2%%%%time:~3,2%%%%time:~6,2%%"
set "timestamp=%%timestamp: =0%%"
set "backup_file=network_backup\%%backup_adapter%%_%%timestamp%%.bak"

REM --- 获取当前配置 ---
for
 /f "tokens=2 delims=:" %%%%a in ('netsh interface ip show config 
"%%backup_adapter%%" ^| findstr "IP 地址"') do set "current_ip=%%%%a"
for 
/f "tokens=2 delims=:" %%%%a in ('netsh interface ip show config 
"%%backup_adapter%%" ^| findstr "子网掩码"') do set "current_mask=%%%%a"
for 
/f "tokens=2 delims=:" %%%%a in ('netsh interface ip show config 
"%%backup_adapter%%" ^| findstr "默认网关"') do set "current_gateway=%%%%a"
for /f "tokens=3 delims=:" %%%%a in ('netsh interface ip show dnsservers "%%backup_adapter%%" ^| findstr "服务器"') do (
    if not defined current_dns1 (
        set "current_dns1=%%%%a"
    ) else if not defined current_dns2 (
        set "current_dns2=%%%%a"
    )
)

REM --- 判断配置类型 ---
echo %%current_ip%% | findstr "自动" >nul
if %%errorlevel%% equ 0 (
    set config_type=dhcp
) else (
    set config_type=static
)

REM --- 创建备份文件 ---
(
    echo adapter=%%backup_adapter%%
    echo config_type=%%config_type%%
    echo ip=%%current_ip%%
    echo mask=%%current_mask%%
    echo gateway=%%current_gateway%%
    echo dns1=%%current_dns1%%
    echo dns2=%%current_dns2%%
) > "%%backup_file%%"

set "backup_file=%%backup_file%%"
goto :eof


本文最后更新时间 2025-08-12
文章链接地址:
https://xzlo.blog/index.php/archives/64/
本站文章除注明[转载|引用|原文]出处外,均为本站原生内容,转载前请注明出处

留言列表(2条)

头像 寒武纪
Singapore ·Singapore · Amazon.com 2025-08-27 06:28

文章排版需要优化一下

头像 千山万水
Singapore ·Singapore · Amazon.com 2025-08-27 06:27

不错,很好用

留言