You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过SteamCMD命令行批量更新所有已安装的Steam游戏?

如何通过SteamCMD命令行批量更新所有已安装的Steam游戏?

嘿,这个需求我之前也折腾过,正好可以给你一步步讲清楚怎么实现——核心就是先拿到已安装游戏的AppID,再用SteamCMD批量执行更新命令就行:

第一步:获取已安装游戏的AppID

Steam会把每个已安装游戏的配置信息存在steamapps目录下的.acf文件里,里面就包含了我们需要的AppID。不同系统的获取方法如下:

Windows系统(PowerShell)

  1. 打开PowerShell,先切换到你的Steam安装目录下的steamapps文件夹,比如:
    cd "C:\Program Files (x86)\Steam\steamapps"
  2. 执行下面的命令提取所有AppID:
Get-ChildItem -Filter *.acf | ForEach-Object { (Get-Content $_.FullName | Select-String '"appid"\s+"(\d+)"').Matches.Groups[1].Value }

这条命令会遍历所有.acf文件,精准提取出每个游戏的AppID。

Linux/macOS系统(终端)

  1. 打开终端,进入Steam的steamapps目录,比如:
    Linux:cd ~/.steam/steam/steamapps
    macOS:cd ~/Library/Application\ Support/Steam/steamapps
  2. 用下面的命令提取并去重AppID:
grep -o '"appid" "[0-9]*"' *.acf | awk -F '"' '{print $4}' | sort -u

第二步:用SteamCMD批量更新游戏

拿到AppID之后,我们可以写个脚本循环执行更新命令,不用手动一个个输入:

Windows PowerShell脚本示例

# 先获取所有已安装游戏的AppID
$gameIds = Get-ChildItem -Filter *.acf | ForEach-Object { (Get-Content $_.FullName | Select-String '"appid"\s+"(\d+)"').Matches.Groups[1].Value }

# 循环更新每个游戏
foreach ($id in $gameIds) {
    # 替换成你的Steam账号信息,有令牌的话在密码后加令牌代码
    steamcmd +login your_username your_password +app_update $id validate +quit
}

Linux/macOS Shell脚本示例

#!/bin/bash

# 切换到steamapps目录
cd ~/.steam/steam/steamapps

# 获取去重后的AppID列表
game_ids=$(grep -o '"appid" "[0-9]*"' *.acf | awk -F '"' '{print $4}' | sort -u)

# 循环更新每个游戏
for id in $game_ids; do
    # 替换成你的Steam账号信息,有令牌的话在密码后加令牌代码
    steamcmd +login your_username your_password +app_update $id validate +quit
done

一些注意事项

  • 账号登录:如果你的账号开启了Steam令牌,登录时需要在密码后面追加令牌验证码(比如+login myname mypass 123456);也可以先手动运行一次SteamCMD完成登录,后续脚本会自动复用会话,不用重复输密码。
  • validate参数:这个参数会验证游戏文件的完整性,如果你只是想快速更新,可以去掉它,加快更新速度。
  • SteamCMD路径:如果系统PATH里没包含SteamCMD,记得用完整路径调用(比如Windows下的C:\steamcmd\steamcmd.exe)。

备注:内容来源于stack exchange,提问作者TheFibonacciEffect

火山引擎 最新活动