所在单位有3000台Windows终端需要定时关机,需求为每天凌晨两点自动关机,关机前有提示,可以手动取消。
因为终端操作系统覆盖了Win XP、Win 7、Win 10,需要从系统兼容性上考虑关机方案。如果关机太突然或不方便取消,可能会妨碍工作人员的正常工作。
需要考虑的工作场景:
收费窗口23:59日结,清理账目
手术室电脑(手术麻醉系统)7x24h 手术时不能中断
门诊医生电脑(8:00-17:30)
仪器电脑(超声、影像、检查检验)
自助设备
住院部医生站、护士站(全天)
这个需求可以分解为关机操作和定时触发两步,分别考察windows自带的系统功能和第三方软件。
Windows 系统提供的功能
定时关机操作
shutdown -s -t 3600

取消关机操作
shutdown -a

shutdown 命令参数说明:
C:\Users\Administrator>shutdown ?用法: shutdown [/i | l | s | sg | r | g | a | p | h | e | o] [/hybrid] [/soft] [/fw] [/f][/m \\computer][/t xxx][/d [p|u:]xx:yy [/c "comment"]]没有参数 显示帮助。这与键入 ? 是一样的。/? 显示帮助。这与不键入任何选项是一样的。/i 显示图形用户界面(GUI)。这必须是第一个选项。/l 注销。这不能与 m 或 d 选项一起使用。/s 关闭计算机。/r 完全关闭并重启计算机。/a 中止系统关闭。这只能在超时期间使用。与 /fw 结合使用,以清除任何未完成的至固件的引导。/p 关闭本地计算机,没有超时或警告。可以与 /d 和 f 选项一起使用。/h 休眠本地计算机。可以与 /f 选项一起使用。/t xxx 将关闭前的超时时间设置为 xxx 秒。有效范围是 0-315360000 (10 年),默认值为 30。如果超时期限大于 0,则 f 参数为/f 参数。/c "comment" 注释重启或关闭的原因。最多允许 512 个字符。/f 强制关闭正在运行的应用程序而不事先警告用户。
shutdown 命令兼容所有 Windows 版本,不方便的地方是取消操作也需要在命令行中进行。对于不熟悉命令行的使用者来说不方便,可以把取消命令包装在bat脚本中,放置在桌面,方便双击运行。
定时执行可以在命令行或图形化的任务计划中指定定时计划。默认的 shutdown -s -t 60 是以倒计时进行定时,以秒为单位。如果时间跨度大,此时需要使用定时程序来触发关机。
老版本的 Windows 可以使用 at 命令
at 2:00 shutdown -s -t 180 # 24小时制at # 显示任务at delete # 删除任务

在Win10中,at 命令已经弃用,无法执行

改为 schtasks 调用关机程序
schtasks /Create /TN shutdown /TR "shutdown -s -t 60" /ST "02:00" /SC DAILY
查询定时任务
schtasks /Query /TN shutdown
删除定时任务
schtasks /Delete /tn shutdown
如果不喜欢命令行,可以在图形化工具中进行定制:taskschd.msc

在任务计划程序中定义一个计划任务

第三方程序在兼容性上不太好,但优点是可以做的很人性化。我推荐一个:
https://github.com/lukaslangrock/ShutdownTimerClassic
程序界面:

在快要关机时,会以不同颜色进行提醒,×掉即可取消关机,也可右键重置计时器,很适合个人使用,如果不是做成强制关机的话。

随着临近机关时间,颜色会越来越明显,还会闪烁进行提醒。

在项目Release 页面有编译好的二进制可供下载,只支持Win10,可能兼容Win7,不支持 Win XP。





