Steam能设置下载完后自动关机?我折腾了三天终于搞明白

记得好几年前的一个夏天,我熬夜等《巫师3》的更新。电视上播着无聊的深夜节目,我强撑着坐在电脑前,结果迷迷糊糊倒在桌子上睡着了。第二天醒来,电脑还开着,风扇像拖拉机一样响,更新倒是下完了,但机器空转了一整夜。从那天起,“下载完后自动关机”就成了我心里的一根刺。

Steam官方有没有这个选项?

我当时刚入Steam没多久,觉得这种贴心的功能应该会有。我翻遍了设置的每个角落,从“下载”到“界面”到“账户”,别说关机了,连一个下载完成时通知的选项都没有。后来我跑去贴吧和论坛问,发现不止我一个人在找。老玩家们都说:Steam从出生到现在,就没给过这个功能。

我试过的各种折腾方法

1. 用第三方小程序

我在GitHub上扒到一个叫“SteamAutoShutdown”的项目,是用Python写的,原理是监听Steam下载状态,然后调用系统关机。我照着说明配置了半天,总算跑起来了。头两天感觉挺爽,但第三天我晚上下游戏,第二天醒来发现电脑没关?原来脚本在我刚开始下的时候误判了一次,关机了,好在我设了取消?后来我查日志,发现各种小毛病,比如占CPU、网络波动导致误判。用了不到一周就给卸了。

2. 自己写PowerShell脚本

我好歹会一点编程,就打算自己写一个。思路是:检查Steam的下载文件夹(steamapps\downloading)里的文件最后修改时间,如果超过5分钟没变化,就认为下载完了,然后执行shutdown -s -t 60。可是实际跑起来问题更多:有些游戏下完后还有解压和验证阶段,这时候文件写入会暂停,电脑就容易提前关掉。有一次我下《GTA5》因为脚本误判,直接关机,我人麻了,只能重新补下缺失的文件。从此我放弃了脚本路线。

3. 任务计划程序+事件触发器

我听说可以利用Windows的任务计划程序,当特定事件发生时触发关机。我花了一整天研究Steam的日志文件,想找到下载完成时产生的事件。但Steam把日志写在自己目录下的txt里,并不往系统事件里写。我试着通过检测Steam进程的网络活动来判断,但太复杂了,到最后也没弄出一个稳定的方案。

我现在是怎么做的

折腾了这么一大圈,我最后还是回到了最原始的方法:看游戏大小和网速,算个大概时间,然后手动设一个定时关机。比如说,我知道今晚要下个50G的游戏,我家下载速度大概30MB/s,大约半小时就能下完。我就在睡觉前用命令 shutdown -s -t 3600(一小时后关机),余量放多一些,就算解压和更新也够了。或者我直接用手机倒计时,到点了远程桌面关一下。

后来我索性搞了一台小主机专门做下载机,主力机晚上就设成休眠,功耗只有几瓦,我也不在乎它是不是还开着。Steam我基本都设在白天更新,非得夜里下的,就用上面那个笨办法。

Steam能设置下载完后自动关机?我折腾了三天终于搞明白

折腾之后的一点心里话

用Steam快十年,眼看着它从简陋的界面变成现在这样花里胡哨,唯独“下载完关机”这个功能一直不出现。我有时候想:是不是Valve觉得大家都24小时不关机?或者是觉得动电源管理容易出问题?但老实说,每次新游戏解锁的夜晚,我还是会怀念当初那段瞎折腾的日子。虽然最后没有一个完美的方案,但至少我弄懂了Steam的下载机制,也尝试了各种工具。过程挺折腾,但也挺有成就感的。