定时断开并重连网络的脚本

wen 实用脚本 2

本文目录导读:

定时断开并重连网络的脚本

  1. 如何使用
  2. 注意事项
@echo off
chcp 65001 >nul网络定时断开重连工具
:: 设置执行模式(默认重连两次)
set /a reconnect_count=2
:menu
cls
echo ============================================
echo         网络定时断开重连脚本
echo ============================================
echo 1. 立即断开并重连网络
echo 2. 运行一次 (立即执行)
echo 3. 最小化到托盘并开始定时任务
echo 4. 停止定时任务
echo 5. 帮助
echo 6. 退出
echo ============================================
set /p choice=请选择操作 (1-6): 
if "%choice%"=="1" goto reconnect_now
if "%choice%"=="2" goto run_once
if "%choice%"=="3" goto start_scheduler
if "%choice%"=="4" goto stop_scheduler
if "%choice%"=="5" goto help
if "%choice%"=="6" exit /b 0
goto menu
:run_once
echo 执行一次网络重连...
goto reconnect_now
:reconnect_now
echo.
echo [%date% %time%] 开始重置网络适配器...
echo.
:: 步骤1:禁用网络适配器(选择所有活跃的以太网/WiFi适配器)
for /f "tokens=*" %%i in ('wmic nic where "NetEnabled=true and (AdapterTypeID=0 or AdapterTypeID=9)" get NetConnectionID 2^>nul ^| findstr /r /c:"^[a-zA-Z]"') do (
    echo 正在禁用适配器: %%i
    netsh interface set interface "%%i" admin=disable
    if !errorlevel! equ 0 (echo 成功禁用) else (echo 禁用失败,请检查权限)
)
:: 等待5秒(适配器完全停用)
echo 等待 5 秒...
timeout /t 5 /nobreak >nul
:: 步骤2:重新启用网络适配器
for /f "tokens=*" %%i in ('wmic nic where "NetEnabled=false and (AdapterTypeID=0 or AdapterTypeID=9)" get NetConnectionID 2^>nul ^| findstr /r /c:"^[a-zA-Z]"') do (
    echo 正在启用适配器: %%i
    netsh interface set interface "%%i" admin=enable
    if !errorlevel! equ 0 (echo 成功启用) else (echo 启用失败,请检查权限)
)
:: 步骤3:等待网络重新连接
echo 等待 10 秒,让网络连接恢复...
timeout /t 10 /nobreak >nul
:: 步骤4:刷新DNS缓存并重新获取IP
echo 刷新 DNS 缓存...
ipconfig /flushdns
echo 释放并更新 IP 地址...
ipconfig /release
ipconfig /renew
echo.
echo [%date% %time%] 网络重连操作完成。
echo.
if "%1"=="nopause" goto :eof
pause
goto menu
:start_scheduler
cls
echo 设置定时任务...
echo.
echo 请设置断开重连的时间间隔(单位:分钟)
set /p interval=间隔分钟数 (建议 30-1440): 
:: 验证输入是否为数字
echo %interval%|findstr /r "^[0-9][0-9]*$" >nul
if errorlevel 1 (
    echo 输入无效,请输入纯数字。
    pause
    goto menu
)
:: 当前脚本的完整路径(带空格处理)
set "script_path=%~f0"
:: 创建计划任务(每 interval 分钟执行一次)
schtasks /create /tn "NetworkResetTask" /tr "%script_path% run_once" /sc minute /mo %interval% /f
if %errorlevel% equ 0 (
    echo 定时任务创建成功!每隔 %interval% 分钟自动执行一次。
    echo 任务名称: NetworkResetTask
) else (
    echo 创建失败,请以管理员身份运行此脚本。
    pause
)
goto menu
:stop_scheduler
cls
echo 正在停止并删除定时任务...
schtasks /delete /tn "NetworkResetTask" /f
if %errorlevel% equ 0 (
    echo 定时任务已取消。
) else (
    echo 未找到该任务或删除失败。
)
pause
goto menu
:help
cls
echo ============================================
echo                帮助信息
echo ============================================
echo 1. 该脚本会禁用并重新启用所有活跃的网络适配器
echo    (以太网/WiFi),然后刷新DNS和IP。
echo 2. 需要以“管理员身份运行”才能修改网络设置。
echo 3. 定时任务使用 Windows 计划任务实现,
echo    可在任务计划程序库中查看/修改。
echo 4. 如果重启后定时任务失效,请重新创建。
echo 5. 间隔建议 30 分钟以上,避免过于频繁重置。
echo ============================================
pause
goto menu

如何使用

  1. 以管理员身份运行:右键点击脚本文件,选择“以管理员身份运行”。
  2. 选择操作
    • 选项1:立即执行一次网络断开和重连。
    • 选项3:创建计划任务,按您指定的分钟数(如60分钟)自动执行。
    • 选项4:删除已创建的定时任务。
  3. 效果说明:脚本会禁用并重新启用所有活跃的网络适配器(以太网/WiFi),然后刷新DNS和IP地址,相当于一次完整的网络连接重置。

注意事项

  • 脚本需要管理员权限才能修改网络适配器状态。
  • 定时任务基于Windows计划任务,重启电脑后仍然存在,除非手动删除。
  • 建议间隔时间设置在30分钟以上,避免过于频繁重置导致网络不稳定。

您可以将此脚本保存为 .bat 文件,随时调用,如果您希望调整适配器选择逻辑或增加网络测试环节,我可以为您进一步定制。

抱歉,评论功能暂时关闭!