AutoHotkey定时关机脚本教程
时间:2026-03-26 11:39:56 495浏览 收藏
本文详细介绍了如何使用AutoHotkey编写灵活、安全且用户友好的定时关机脚本,涵盖四种实用模式:固定时长倒计时、用户自定义分钟输入、带取消功能与托盘提醒的增强版,以及精确到指定时间点的关机方案;所有脚本均内置输入校验(如1–1440分钟范围、合法时间格式)、实时倒计时显示、系统托盘交互及关机前预警机制,兼顾易用性与可靠性,让普通用户也能轻松实现个性化自动关机管理。

如果您希望使用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、若设定时间已过当日,脚本默认顺延至次日同一时刻。
终于介绍完啦!小伙伴们,这篇关于《AutoHotkey定时关机脚本教程》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
440 收藏
-
328 收藏
-
170 收藏
-
358 收藏
-
382 收藏
-
318 收藏
-
428 收藏
-
433 收藏
-
408 收藏
-
439 收藏
-
480 收藏
-
191 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习