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

Steam批处理脚本执行中断:启动游戏后无法运行后续代码

为啥启动Path of Exile后,批处理的后续代码不执行了?

嘿,这个问题我太熟了——核心原因就是批处理的阻塞执行机制在搞鬼!

当你直接在批处理里调用Steam或者游戏的启动命令时,批处理会进入“等待模式”:它会死死盯着你启动的这个进程(不管是Steam客户端还是Path of Exile游戏),直到这个进程完全关闭,才会继续往下执行后面的echo ASDF代码。而Path of Exile是个长时间运行的游戏,只要你不关掉它,批处理就会一直卡在启动游戏的那一行,根本轮不到执行后续指令。

怎么解决?用start命令异步启动就行!

批处理里的start命令专门用来异步启动程序——它会把目标进程丢到后台运行,批处理本身不会等它结束,直接继续执行后面的代码。给你两种适配你需求的写法:

写法1:直接通过Steam协议启动游戏

Steam支持用steam://rungameid/[游戏ID]的协议快速启动游戏,Path of Exile的游戏ID是238960,脚本可以这么写:

:: 异步启动Path of Exile,空引号是窗口标题占位(必须加)
start "" "steam://rungameid/238960"
echo ASDF

这里的""start命令要求的窗口标题参数,哪怕你不需要标题也得留着,否则如果路径/协议里有空格,start会识别出错。

写法2:先启动Steam(未运行时)再启动游戏

如果需要先检查并启动Steam,再开游戏,也可以用start异步处理:

:: 检查Steam是否在运行,没运行就启动它
tasklist /FI "IMAGENAME eq steam.exe" 2>NUL | find /I /N "steam.exe">NUL
if "%ERRORLEVEL%"=="1" start "" "C:\Program Files (x86)\Steam\Steam.exe"

:: 异步启动Path of Exile
start "" "steam://rungameid/238960"
echo ASDF

补充说明

你之前的脚本应该是直接写了类似"C:\Program Files (x86)\Steam\Steam.exe" -applaunch 238960的命令,没有加start——这种写法就是阻塞式的,批处理会等Steam和游戏全关掉才继续。加上start之后,就把这个进程变成后台运行,批处理就能顺利执行后续的echo ASDF了。

内容的提问来源于stack exchange,提问作者Mate de Vita

火山引擎 最新活动