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

2025-08-12T14:29:00

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


当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »