我正在尝试创建启动游戏、等待其关闭然后运行最后一个命令的脚本。根据我的研究,我想使用“/WAIT”标志,但它似乎不起作用:'(。我在完全更新的 Windows 10 x64 上。
脚本如下:
::FreeSoftwareServers
set keymapperdir="G:\JoyToKey\"
set keymapper=JoyToKey.exe
set p1profile="G:\JoyToKey\BLANK.cfg"
set defaultprofile="G:\JoyToKey\Basic.cfg"
start /d %keymapperdir% %keymapper% %p1profile%
start /WAIT /d "G:\SteamLibrary\steamapps\common\rocketleague\Binaries\Win32" RocketLeague.exe
::pause
start /d %keymapperdir% %keymapper% %defaultprofile%
关于如何实现我的目标,您有什么想法吗?或者什么地方不起作用?我正在研究查找 exe 的 while 循环,但这似乎有点过度,而且浪费资源。谢谢。
答案1
嗯,我认为问题在于 RocketLeague 是一款 Steam 游戏,因此 exe 会调用 steam,暂时关闭,直到 steam 打开它,但这只是猜测。此功能在非 steam 游戏中确实按预期工作。我不介意进行代码审查,但我决定只使用“while 循环”方法来查看 exe 是否在超时前运行。我的家庭服务器上有大量空间资源,所以这不是什么大问题。
以下是我如何让它工作的方法:
::FreeSoftwareServers
set keymapperdir="G:\JoyToKey\"
set keymapper=JoyToKey.exe
set p1profile="G:\JoyToKey\BLANK.cfg"
set defaultprofile="G:\JoyToKey\Basic.cfg"
start /d %keymapperdir% %keymapper% %p1profile%
"G:\SteamLibrary\steamapps\common\rocketleague\Binaries\Win32\RocketLeague.exe"
TIMEOUT /T 5
SETLOCAL EnableExtensions
set EXE=RocketLeague.exe
:while1
FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF %%x == %EXE% goto FOUND
goto FIN
:FOUND
TIMEOUT /T 5
goto :while1
:FIN
start /d %keymapperdir% %keymapper% %defaultprofile%
我更擅长使用 Bash,因此如果这看起来很荒谬并且有人有更好的方法,请告诉我,我会接受答案。