Steam下载完自动关机:让电脑在游戏下载完成后自动关闭

深夜下载的烦恼

作为一个游戏迷,我几乎每周都会在Steam上淘新游戏。可现在的3A大作动辄100GB,白天要上班,只能晚上挂着下载。以前我总在睡前手动设置定时关机,结果不是下载中途失败,就是游戏更新后又跳出一个补丁,电脑白白开了一整夜。听着风扇嗡嗡响,想着浪费的电费,心里真不是滋味。

第一次尝试:利用Steam自带的“下载完成后启动”

我翻遍Steam设置,发现下载选项里有个“下载完成后启动”的功能。这功能原本是让下载完自动运行游戏,但我灵机一动:能不能用它来启动一个关机命令?于是写了一个简单的批处理文件shutdown.bat,内容只有一行:shutdown /s /t 0。然后在Steam设置中把这个bat指定为“下载完成后启动”的程序。结果一试,第一个游戏下载完电脑立刻关机,可队列里还有第二个游戏没下完。这功能只针对单个下载项,并不判断整个下载队列是否全部完成。

改进:智能检测下载状态

为了解决这个问题,我写了一个批处理脚本,不再直接关机,而是循环检查Steam下载目录里有没有正在下载的文件。Steam下载中的文件通常会带有.tmp或.steamtemp后缀,或者Downloading状态。我让脚本每隔半分钟扫描一次,如果超过5分钟没有发现下载中文件,就执行关机。我把这个脚本设为Steam的“下载完成后启动”程序,这样每次一个任务下载完就会触发检查,确保所有任务都完成了才关机。

更可靠的方法:Windows任务计划程序

后来我又发现了另一种可靠的方法——使用Windows任务计划程序。原理是监控Steam下载进程的CPU占用或网络流量,当这些指标下降到接近零且持续一段时间后,触发关机。我创建了一个任务,触发器设置为“程序启动时”,但更适合的是用PowerShell脚本定期检查。我写了一个PowerShell脚本,获取进程steam和steamwebhelper,如果进程存在且CPU和磁盘活动较低,就等待10分钟再检查,仍然空闲则关机。这个任务可以设置开机启动,始终监控Steam状态。

具体设置步骤

  • 打开任务计划程序,创建基本任务。
  • 触发器选择“当特定事件被记录时”,或者使用“每天”但通过脚本控制。
  • 操作启动PowerShell,参数指定脚本路径。
  • 在条件里取消“只有计算机使用交流电源时才启动”,避免笔记本断开电源时不执行。

用了这种方法后,我再也不用担心下载到一半不关机了。而且它不依赖Steam内置功能,对Steam的更新也有一定鲁棒性。

第三方工具的教训

网上也有各种第三方工具号称一键设置下载后关机,我试用过两个,结果发现其中一个捆绑了恶意软件,另一个则要求过多权限。作为一个老玩家,我深知账号安全比电费重要得多,所以最终只使用微软官方工具和自己编写的脚本。

现在的体验

现在我在Steam上下载游戏,都是睡前点击下载,然后安心睡觉。第二天醒来,电脑已经关机,游戏也安装好了。偶尔遇到Steam版本更新导致脚本失效,我会再调整一下代码。这种自己掌控的感觉很好,省电又省心。