AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1727148
Accepted
Mag Roader
Mag Roader
Asked: 2022-06-19 07:45:47 +0800 CST2022-06-19 07:45:47 +0800 CST 2022-06-19 07:45:47 +0800 CST

通过命令行检查 Steam 游戏是否需要更新

  • 772

我有一个 Steam 游戏的专用服务器在我的 Windows 机器上运行,我想保持它是最新的。

我想定期检查是否有可用的更新,如果有,请安装它,通知用户服务器正在重新启动,然后重新启动服务器。

问题是,我不知道如何检查更新是否可用。

有一个名为 SteamCMD 的命令行实用程序,但尚不清楚如何使用它来检查服务器是否需要更新 - 它似乎只能告诉某些内容要更新,而不是检查是否需要更新。

我怎样才能通过命令行做这些事情?

  • 检查 Steam 应用是否需要更新,或
  • 更新 Steam 应用程序,然后知道是否发生了更新
steam
  • 1 1 个回答
  • 267 Views

1 个回答

  • Voted
  1. Best Answer
    Mag Roader
    2022-07-17T16:09:07+08:002022-07-17T16:09:07+08:00

    这个批处理脚本对我很有用。它使用 curl 查询服务器以了解构建是否更改,并使用 steamapp 安装新版本。如果有新的 beta 版本或其他东西,这将是过于热心的安装,但我并不真正关心我的目的 - 如果需要,可以做更多的工作来提取所需的精确构建 ID。

    它需要传递 AppID(可从 Steam 中游戏的属性,右键菜单中获得)以及安装目录。

    调用该脚本时,如果需要更新,则返回 1,如果不需要更新,则返回 0,如果出现错误,则返回 -1。它要求 steamapp/steamapp.exe 相对于批处理脚本存在。

    @ECHO OFF
    SETLOCAL EnableDelayedExpansion
    
    SET RETVALUE=-1
    
    IF "%1"=="" (
        ECHO ERROR: Please provide Steam App ID as first parameter
        GOTO END
    )
    
    IF "%2"=="" (
        ECHO ERROR: Please provide app directory as second parameter - likely within steamapps\common
        GOTO END
    )
    
    SET APP_INSTALL_DIR=%2\
    
    IF NOT EXIST !APP_INSTALL_DIR! (
        ECHO ERROR: Install directory not found: !APP_INSTALL_DIR! 
        GOTO END
    )
    
    SET STEAMCMD=%~dp0\steamcmd\steamcmd.exe
    
    IF NOT EXIST !STEAMCMD! (
        ECHO Expected: steamcmd located in !STEAMCMD!
        GOTO END
    )
    
    SET APPID=%1
    SET APPINFO_DIR=%~dp0\appinfo
    SET APPINFO_FILE=!APPINFO_DIR!\!APPID!
    SET APPINFO_FILE_NEW=!APPINFO_FILE!-new
    
    IF NOT EXIST !APPINFO_DIR!\ MKDIR !APPINFO_DIR!
    
    ECHO Checking for needed updates for game id !APPID!
    
    CALL curl https://api.steamcmd.net/v1/info/!APPID! --silent --output !APPINFO_FILE_NEW!
    IF !ERRORLEVEL! NEQ 0 (
        ECHO Error getting app info for game
        GOTO END
    )
    
    SET NEEDS_UPDATE=1
    IF EXIST !APPINFO_FILE! (
        CALL FC !APPINFO_FILE! !APPINFO_FILE_NEW! > NUL
        IF !ERRORLEVEL! EQU 0 SET NEEDS_UPDATE=0
    )
    
    IF !NEEDS_UPDATE! NEQ 0 (
        ECHO Update required, installing to !APP_INSTALL_DIR!
        CALL !STEAMCMD! +force_install_dir !APP_INSTALL_DIR! +login anonymous +app_update !APPID! validate +quit 
        IF !ERRORLEVEL! NEQ 0 (
            ECHO Error updating app via steamcmd
            GOTO END
        )
        
        MOVE !APPINFO_FILE_NEW! !APPINFO_FILE! > NUL
    
        ECHO Version out-of-date, returning 1
        SET RETVALUE=1
        GOTO END
    ) ELSE (
        ECHO Version up-to-date, returning 0
        DEL !APPINFO_FILE_NEW!
        SET RETVALUE=0
        GOTO END
    )
    
    :END
    
    EXIT /B !RETVALUE!
    

    我可以在一个单独的批处理脚本中使用它,定期运行,检查是否有新的更新,如果有,倒计时并执行重启。

    • 1

相关问题

  • Vulkan 驱动程序无法正常工作,导致 Steam 无法按预期运行

  • 在 CentOS 8 上安装 Steam 的问题

  • 如何在 Steam 之外使用 Steam 控制器作为游戏控制器

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve