可交互倒计时关机脚本需结合gui输入、时间计算与shutdown命令,支持固定分钟、用户输入分钟、托盘提醒及指定时间四种模式,均校验输入有效性并实时倒计时。

如果您希望使用AutoHotkey创建一个可交互设置倒计时后自动关机的脚本,则需结合GUI输入、时间计算与系统关机命令。以下是实现该功能的多种方法:
一、基础倒计时关机脚本(固定时长)
该方法适用于预设固定分钟数的关机任务,通过内置Sleep指令延时后调用shutdown命令,无需用户交互,适合快速部署。
1、新建文本文件,扩展名改为 .ahk。
2、写入以下内容:
SetTimer, CheckTime, 1000
minutes := 30
total_seconds := minutes * 60
start_time := A_TickCount
return
CheckTime:
elapsed := (A_TickCount - start_time) // 1000
remaining := total_seconds - elapsed
if (remaining Run, shutdown.exe /s /f /t 0
ExitApp
}
return
3、双击运行脚本,将在30分钟后强制关机。
二、带GUI输入框的交互式倒计时脚本
该方法通过图形界面获取用户输入的分钟数,动态计算关机时间,并实时显示剩余秒数,提升可用性与可控性。
1、新建.ahk文件并写入:
Gui, Add, Text,, 输入倒计时分钟数:
Gui, Add, Edit, vMinutes w100 Number Limit4,
Gui, Add, Button, Default gStartShutdown, 开始倒计时
Gui, Show,, Auto关机定时器
return
StartShutdown:
Gui, Submit
if (Minutes = "") or (Minutes 1440) {
MsgBox, 请输入1–1440之间的有效分钟数
return
}
total_seconds := Minutes * 60
SetTimer, Countdown, 1000
Gui, Destroy
Gui, Add, Text, vCountdownText w200 h50 Center, 倒计时中: %total_seconds% 秒
Gui, Show,, 关机倒计时
return
Countdown:
total_seconds--
if (total_seconds Run, shutdown.exe /s /f /t 0
ExitApp
}
GuiControl,, CountdownText, 倒计时中: %total_seconds% 秒
return
2、运行后弹出窗口,用户在编辑框输入数字,点击按钮即启动倒计时。
3、脚本运行期间,窗口内实时刷新剩余秒数,关机前无提示但执行确定。
三、带取消功能与系统托盘提醒的增强版
该方法在托盘区域添加图标和右键菜单,支持随时中止倒计时,并在关机前10秒弹出警告,避免误操作导致数据丢失。
1、新建.ahk文件,粘贴以下代码:
#NoTrayIcon
Menu, Tray, NoStandard
Menu, Tray, Add, 设置倒计时..., SetTime
Menu, Tray, Add, 取消关机, CancelShutdown
Menu, Tray, Add
Menu, Tray, Add, 退出, ExitScript
Menu, Tray, Default, 设置倒计时...
Menu, Tray, Click, 1
return
SetTime:
InputBox, Minutes, 自动关机定时器, 请输入关机倒计时(分钟):, , 300, 150
if ErrorLevel
return
if (Minutes = "") or (Minutes 1440) {
MsgBox, 无效输入,请输入1–1440之间的整数
return
}
total_seconds := Minutes * 60
SetTimer, CountdownWithAlert, 1000
TrayTip, 关机定时器已启动, 还剩 %Minutes% 分钟, 10, 1
return
CountdownWithAlert:
total_seconds--
if (total_seconds == 10) {
TrayTip, 即将关机!, 10秒后执行关机,请保存工作, 10, 2
}
if (total_seconds Run, shutdown.exe /s /f /t 0
ExitApp
}
return
CancelShutdown:
SetTimer, CountdownWithAlert, Off
total_seconds := ""
TrayTip
MsgBox, 48, 已取消, 自动关机已中止
return
ExitScript:
ExitApp
2、运行后任务栏出现托盘图标,右键可设置、取消或退出。
3、倒计时至最后10秒时触发系统托盘提醒和弹窗警告,确保用户知情。
四、基于系统绝对时间的定时关机脚本
该方法不依赖相对倒计时,而是设定具体日期与时间点执行关机,适用于每日固定时刻关机场景,如夜间23:59自动关闭电脑。
1、新建.ahk文件,写入:
FormatTime, now, , HH:mm:ss
InputBox, target_time, 绝对时间关机, 请输入关机时间(24小时制,格式HH:mm):, , 300, 150
if ErrorLevel
return
StringSplit, t, target_time, `:
if (t0 != 2) or !(t1 is integer) or !(t2 is integer) or (t1 > 23) or (t2 > 59) {
MsgBox, 时间格式错误,请输入如 23:59
return
}
target_ticks := t1 * 3600 + t2 * 60
now_ticks := SubStr(now,1,2)*3600 + SubStr(now,4,2)*60 + SubStr(now,7,2)
if (target_ticks target_ticks += 86400
delay_seconds := target_ticks - now_ticks
SetTimer, DoShutdown, % delay_seconds * 1000
MsgBox, 已设定于 %target_time% 关机,等待 %delay_seconds% 秒
return
DoShutdown:
Run, shutdown.exe /s /f /t 0
ExitApp
2、首次运行时输入目标时间,例如23:59,脚本自动计算距当前时刻的秒数并等待执行。
3、若设定时间已过当日,脚本默认顺延至次日同一时刻。











