展厅电脑端侧定时任务:断网也能到点执行
本文的操作以 Windows 10 / 11 为例,
schtasks命令需在管理员权限的命令行下执行。具体菜单名称可能因系统版本略有差异。
展厅的定时任务大多配在中控上:到点了中控给各台设备下发开机、播放、关机指令。这套做法没问题,但有个隐含前提——中控本身得在线,网络得通。
这个前提在现场并不总成立。交换机重启、中控主机死机、网线被施工碰掉、临时改造断了一段网……只要中控和被控电脑之间这条链断了,所有定时动作就集体失效,而且往往没人发现,直到第二天开馆看见一屋子黑屏。
端侧定时是另一条思路:让每台电脑自己记住”几点该干什么”,到点自己执行,不依赖网络也不依赖中控。这篇讲清它怎么做、什么时候用它。
端侧定时和中控定时,各管一段
先把分工说明白,两者不是替代关系。
| 中控定时 | 端侧定时 | |
|---|---|---|
| 动作范围 | 全场设备,能跨设备编排时序 | 只管本机 |
| 依赖 | 中控在线 + 网络通 | 只依赖本机时钟 |
| 断网时 | 全部失效 | 照常执行 |
| 适合 | 场景联动、多设备协同 | 本机自保、兜底 |
一个稳妥的现场是两者都配:中控负责”迎宾模式一键起全场”这类需要协同的事;端侧负责”本机到点自己关机""开机后自己把播放软件拉起来”这类自扫门前雪的事。中控挂了,端侧这条线还能撑住基本运转,展厅不至于全黑。
三种触发方式,解决三类不同的问题
端侧定时不只是”几点几分做什么”。实际现场需要三种触发方式,各自对应一类问题。
一、定点触发:几点几分执行
最常见的一种,用来做每天固定的开馆闭馆动作。
schtasks 建一个每天 8:30 执行的任务:
schtasks /create /tn "开馆-启动播放" /tr "D:\Player\player.exe" /sc daily /st 08:30 /ru SYSTEM
要区分工作日和周末就换 /sc weekly /d MON,TUE,WED,THU,FRI。图形界面里在”任务计划程序”建也一样,只是点得多。
这里有个展厅特有的坑:节假日。定点任务不认日历,元旦闭馆它照样 8:30 把投影打开,白烧一天灯泡。要么在脚本开头加个日期判断,要么把节假日的排期交给中控统一管——这正是中控定时更擅长的地方。
二、开机后延时触发:等一会儿再干
这个容易被忽略,但在展厅极其重要。
场景是这样的:机器开机后,你希望播放软件自动起来。但如果软件在开机瞬间就启动,很可能碰上一堆麻烦——网络还没连上、映射的素材盘还没挂载、显卡驱动还没初始化完、杀毒软件正在开机扫描抢资源。软件起来了却读不到片源,等于白起。
解法是延后几十秒再启动,等系统缓过这口气。schtasks 用 /delay 参数,格式是 分钟:秒:
schtasks /create /tn "开机延时启动" /tr "D:\Player\player.exe" /sc onstart /delay 0001:00 /ru SYSTEM
上面这条是开机后延时 1 分钟执行。
延时的另一个用途是多程序错峰。几个程序都要开机自启,同时起会互相抢 CPU 和磁盘,启动过程慢得离谱甚至互相卡死。给它们设不同的延时——A 延 20 秒、B 延 40 秒、C 延 60 秒——一个个来,整体反而更快更稳。
三、关机前触发:走之前把事办了
这是三种里最难做的一种,也是最容易被跳过的。
典型需求:闭馆关机前,先把投影机关掉(投影得先散热,跟着电脑一起断电对灯泡不好)、把当天的运行日志上报、把未保存的数据落盘。这些事必须在”关机流程已经开始、但系统还没真的关掉”这个窗口里完成。
Windows 任务计划做不了这件事——它的触发器里有”启动时""登录时""按计划""空闲时""事件触发”,唯独没有”关机时”。这是很多人配到一半才发现的。
系统自带的替代方案是组策略里的关机脚本:运行 gpedit.msc,进「计算机配置 → Windows 设置 → 脚本(启动/关机)」,双击”关机”,把脚本加进去。这条路能走通,但有几个限制得知道:
- 家庭版没有
gpedit.msc,得用注册表或第三方方式; - 关机脚本有默认执行超时,脚本跑太久会被系统强行掐断,所以只适合放快命令;
- 强制关机(
shutdown /f)、直接断电、系统崩溃这几种情况不会触发——它只在正常的关机流程里生效。
最后这条要特别记住:关机前触发本质上是”尽力而为”,不能当成可靠保证。真正重要的数据别指望关机脚本去保存,该实时落盘就实时落盘。
用现成工具省掉这些
上面三种触发方式,用系统自带的东西全部能实现,代价是:定点用任务计划、开机延时用任务计划的 /delay、关机前得翻组策略,三套机制三个地方配,出了问题排查也得分三处查。多台电脑还得挨台配一遍。
如果嫌散,可以用带定时能力的代理程序统一管。我们自研的 SoftAgent 把这三种触发做在了一处:定点用标准 cron 表达式、开机后延时按秒设、关机前触发也内置了——三种触发方式免费版全都能用,免费版可以配 2 个已启用的定时任务。
它的关机前触发同样有前面说的那个盲区:走的是系统会话结束钩子,外部强制关机、断电、崩溃不保证触发;由它自己或中控下发的正常关机(不带 /f)会触发。这是 Windows 机制本身的限制,换任何工具都一样,别把它当成断电保护。
另外它到点执行的动作是在本机跑的,所以断网照样触发——这正是端侧定时的价值所在。
一张能抄的时间表
以每天 9:00 开馆、17:30 闭馆的展厅为例:
| 时间 | 触发方式 | 动作 | 放在哪 |
|---|---|---|---|
| 08:30 | 定点 | 电源时序器通电,各设备来电自启 | 时序器 / 中控 |
| 开机后 +60 秒 | 开机延时 | 拉起播放软件 | 端侧 |
| 开机后 +90 秒 | 开机延时 | 拉起中控客户端 | 端侧 |
| 08:50 | 定点 | 中控执行”开馆场景”,投影开机、切源、起片 | 中控 |
| 17:30 | 定点 | 中控执行”闭馆场景”,画面静音、投影关机 | 中控 |
| 17:35 | 定点 | 本机关机 | 端侧 |
| 关机前 | 关机前触发 | 上报当天运行状态 | 端侧 |
| 17:40 | 定点 | 时序器断总电 | 时序器 |
注意几个刻意的设计:投影机在 17:30 先关,电脑 17:35 才关,总电 17:40 才断——中间留的这两段时间是给投影散热和电脑正常关机用的。直接一刀切总电,投影灯泡寿命和电脑硬盘都遭罪。
开馆侧同理,8:30 通电、8:50 才执行开馆场景,中间 20 分钟留给设备预热和自启。别把时间卡太死。
配完一定要验
定时任务最大的问题是”看起来配好了,实际到点不动”,而你要等到第二天才发现。上线前务必验:
- 手动触发一次:任务计划里右键”运行”,确认动作本身是对的;
- 改时间实测:把执行时间改到两分钟后,等着看它到底跑不跑;
- 拔网线测试:断网后再触发一次,确认端侧任务不受影响;
- 重启后确认:重启机器,看任务是否还在、下次运行时间是否正常;
- 查执行历史:任务计划的”历史记录”标签要打开,出问题时这是唯一的线索。
常见症状对照
| 症状 | 多半原因 | 怎么办 |
|---|---|---|
| 到点不执行 | 任务没启用,或”只在用户登录时运行” | 改成”不管用户是否登录都运行” |
| 执行了但没界面 | 以 SYSTEM 身份跑在会话 0,看不见桌面 | 改用登录用户身份运行 |
| 脚本手动跑正常,定时跑就失败 | 工作目录不对,或映射盘在服务身份下不可见 | 脚本里用绝对路径,别依赖映射盘 |
| 开机任务偶尔失败 | 起太早,依赖项没就绪 | 加延时,30~60 秒起步 |
| 关机脚本没跑 | 用了强制关机,或脚本超时被掐 | 正常关机流程触发;脚本只放快命令 |
| 时间莫名其妙漂了 | 机器时钟没同步 | 配 NTP 校时,展厅内网可指向中控主机 |
最后一条别小看。展厅电脑常年不联外网,主板电池老化后系统时间会慢慢漂,漂个十几分钟定时就全乱了。内网也要有校时源。
小结
端侧定时的价值是去掉依赖:不靠网络、不靠中控,本机时钟到点就执行。它不取代中控定时,而是在中控挂掉时兜住底。
三种触发方式对应三类问题——定点管每天固定动作,开机延时管”等系统缓过来再干活”,关机前管收尾。前两种系统自带的任务计划就能配,第三种得走组策略且只能尽力而为。
配完记得改时间实测一遍,别等到第二天开馆才发现没跑。想把定时、自启、守护三件套连起来看,参考展厅无人值守怎么做;中控侧的排期与场景编排见中控定时任务配置实操。