You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术需求:带密码验证的强制倒计时关机Batch脚本

防退出的关机倒计时批处理解决方案

我完全懂你的需求——之前的脚本太容易被终止,导致关机操作泡汤。要实现就算关闭窗口/退出脚本,倒计时依然继续,仅输入正确密码才能取消关机的效果,核心思路是把倒计时和关机逻辑放到一个独立的后台进程里,前台只负责密码验证和取消操作。

实现代码

@echo off
setlocal enabledelayedexpansion

:: 配置参数:修改这里的倒计时时间和密码
set "countdown_seconds=20"
set "cancel_password=MySecurePass123"

:: 启动后台独立进程,负责倒计时和执行关机
:: /min 让后台窗口最小化,不干扰用户操作
start /min cmd /c ^
"echo 后台倒计时启动:%countdown_seconds%秒后关机... & ^
ping -n %countdown_seconds%+1 127.0.0.1 >nul & ^
shutdown /s /f /t 0"

:: 前台交互:提示用户输入密码
cls
echo ==============================================
echo 警告:你的电脑将在 %countdown_seconds% 秒后强制关机!
echo ==============================================
echo 输入正确密码可立即取消关机:
set /p "user_input=请输入密码:"

:: 验证密码并执行对应操作
if "!user_input!"=="!cancel_password!" (
    echo 密码正确!正在取消关机...
    shutdown /a
    if %errorlevel% equ 0 (
        echo 关机已成功取消!
    ) else (
        echo 取消失败,可能关机指令已执行完毕。
    )
) else (
    echo 密码错误!关机将按计划执行。
)

pause >nul
exit /b

关键细节解释

  • 后台进程独立运行:用start /min启动的后台cmd进程和前台脚本完全分离,就算关闭前台窗口,后台的倒计时和关机逻辑依然会走完。
  • 准确倒计时:ping -n %countdown_seconds%+1是因为ping命令每间隔1秒发送一次包,要达到N秒的倒计时,需要发送N+1个包(第一个包立即发送,之后每个间隔1秒)。
  • 强制关机:shutdown /s /f /t 0里的/f参数会强制关闭所有正在运行的程序,避免程序弹窗阻止关机。
  • 密码验证逻辑:启用enabledelayedexpansion确保变量在输入验证时能正确读取,避免环境变量延迟解析的问题。

使用注意事项

  1. 把代码里的MySecurePass123改成你自己的密码,countdown_seconds可以调整倒计时时长。
  2. 建议右键以管理员身份运行脚本,确保shutdown命令能顺利执行(尤其是强制关闭程序时)。
  3. 后台的cmd窗口是最小化状态,用户不会看到,也不会影响当前操作。

内容的提问来源于stack exchange,提问作者J D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:56:51