批处理bat实现将自动获取的地址设置为默认


@echo offtitle 帽帽电脑专用IP设置工具-增强版color 0A
:: IP地址设置工具 - 增强版:: 功能:交互式设置网络连接的IP地址配置:: 注意:需要管理员权限运行
:: 检查管理员权限net session >nul 2>&1if %errorLevel% neq 0 ( echo 错误:此脚本需要管理员权限才能运行。 echo 请右键点击脚本,选择"以管理员身份运行"。 pause exit /b 1)
:: 定义网络连接名称(请根据实际情况修改)set "ConnectionName=Ethernet0"
:: 检查网络连接是否存在netsh interface show interface | find "%ConnectionName%" >nulif %errorlevel% neq 0 ( echo 错误:未找到名为 "%ConnectionName%" 的网络连接。 echo 请修改脚本中的 ConnectionName 变量为正确的网络连接名称。 pause exit /b 1)
:MENUclsecho ==================================================echo IP地址设置工具 - 增强版echo ==================================================echo.echo 当前网络连接: %ConnectionName%echo.echo 1. 设置静态IP地址echo 2. 设置为自动获取IP地址echo 3. 显示当前IP配置echo 4. 刷新DNS缓存echo 5. 退出echo.echo ==================================================echo.
choice /C 12345 /N /M "请选择操作 [1-5]: "
if errorlevel 5 goto EXITif errorlevel 4 goto FLUSH_DNSif errorlevel 3 goto SHOW_IPif errorlevel 2 goto SET_DHCPif errorlevel 1 goto SET_STATIC_IP
:SET_STATIC_IPclsecho ==================================================echo 设置静态IP地址echo ==================================================echo.
:INPUT_IPset /p ip="请输入IP地址 [例如: 192.168.1.100]: "call :VALIDATE_IP %ip%if %errorlevel% neq 0 ( echo 错误:无效的IP地址格式,请重新输入。 goto INPUT_IP)
:INPUT_MASKset /p mask="请输入子网掩码 [例如: 255.255.255.0]: "call :VALIDATE_MASK %mask%if %errorlevel% neq 0 ( echo 错误:无效的子网掩码格式,请重新输入。 goto INPUT_MASK)
:INPUT_GATEWAYset /p gateway="请输入默认网关 [例如: 192.168.1.1]: "if not "%gateway%"=="" ( call :VALIDATE_IP %gateway% if %errorlevel% neq 0 ( echo 错误:无效的默认网关格式,请重新输入。 goto INPUT_GATEWAY ))
:INPUT_DNS1set /p dns1="请输入首选DNS服务器 [例如: 8.8.8.8]: "if not "%dns1%"=="" ( call :VALIDATE_IP %dns1% if %errorlevel% neq 0 ( echo 错误:无效的DNS服务器格式,请重新输入。 goto INPUT_DNS1 ))
:INPUT_DNS2set /p dns2="请输入备用DNS服务器 [例如: 8.8.4.4]: (留空则不设置) "if not "%dns2%"=="" ( call :VALIDATE_IP %dns2% if %errorlevel% neq 0 ( echo 错误:无效的DNS服务器格式,请重新输入。 goto INPUT_DNS2 ))
echo.echo 确认设置:echo.echo IP地址: %ip%echo 子网掩码: %mask%echo 默认网关: %gateway%echo 首选DNS: %dns1%echo 备用DNS: %dns2%echo.
choice /C YN /N /M "是否应用上述设置? [Y/N]: "if errorlevel 2 goto MENUif errorlevel 1 goto APPLY_STATIC
:APPLY_STATICecho.echo 正在设置IP地址,请稍候...
:: 设置IP地址和子网掩码netsh interface ip set address name="%ConnectionName%" static %ip% %mask% %gateway% 1
:: 设置DNS服务器if not "%dns1%"=="" ( netsh interface ip set dns name="%ConnectionName%" static %dns1% primary) else ( netsh interface ip set dns name="%ConnectionName%" dhcp)
if not "%dns2%"=="" ( netsh interface ip add dns name="%ConnectionName%" %dns2% index=2)
echo.echo IP地址设置完成!echo.pausegoto MENU
:SET_DHCPclsecho ==================================================echo 设置为自动获取IP地址echo ==================================================echo.
choice /C YN /N /M "确定要将 %ConnectionName% 设置为自动获取IP地址吗? [Y/N]: "if errorlevel 2 goto MENUif errorlevel 1 goto APPLY_DHCP
:APPLY_DHCPecho.echo 正在设置为自动获取IP地址,请稍候...
:: 设置为自动获取IP地址netsh interface ip set address name="%ConnectionName%" dhcp
:: 设置为自动获取DNS服务器netsh interface ip set dns name="%ConnectionName%" dhcp
echo.echo 已成功设置为自动获取IP地址!echo.pausegoto MENU
:SHOW_IPclsecho ==================================================echo 当前IP配置信息echo ==================================================echo.
ipconfig /all | findstr /i /c:"%ConnectionName%" /c:"IPv4" /c:"子网掩码" /c:"默认网关" /c:"DNS服务器"
echo.pausegoto MENU
:FLUSH_DNSclsecho ==================================================echo 刷新DNS缓存echo ==================================================echo.
ipconfig /flushdns
echo.echo DNS缓存已刷新!echo.pausegoto MENU
:EXITclsecho ==================================================echo 感谢使用IP设置工具echo ==================================================echo.exit /b 0
:VALIDATE_IP:: 验证IP地址格式set "ip=%~1"set "octets=0"set "valid=1"
:: 检查是否有4个点分十进制部分for /f "tokens=1-4 delims=." %%a in ("%ip%") do ( set /a octets+=1 set "octet=%%a"
:: 检查每个部分是否为数字 for /f "delims=0123456789" %%i in ("!octet!") do set "valid=0"
:: 检查每个部分是否在0-255之间 if !octet! LSS 0 set "valid=0" if !octet! GTR 255 set "valid=0")
:: 检查是否正好有4个部分if %octets% neq 4 set "valid=0"
exit /b %valid%
:VALIDATE_MASK:: 验证子网掩码格式set "mask=%~1"call :VALIDATE_IP %mask%if errorlevel 1 exit /b 1
:: 检查是否为有效的子网掩码值set "valid_masks=255.0.0.0 255.128.0.0 255.192.0.0 255.224.0.0 255.240.0.0 255.248.0.0 255.252.0.0 255.254.0.0 255.255.0.0 255.255.128.0 255.255.192.0 255.255.224.0 255.255.240.0 255.255.248.0 255.255.252.0 255.255.254.0 255.255.255.0 255.255.255.128 255.255.255.192 255.255.255.224 255.255.255.240 255.255.255.248 255.255.255.252"
for %%m in (%valid_masks%) do ( if "%mask%"=="%%m" exit /b 0)
exit /b 1
版权保护: 本文由 绿茶加糖-郭保升 原创,转载请保留链接: https://www.guobaosheng.com/computer/372.html
- 上一篇:BAT实现限制U盘访问
- 下一篇:Windows系统入侵痕迹自查指南
