|
本帖最后由 yue-no.3 于 2025-5-5 23:30 编辑
引子
为什么需要批处理启动游戏呢?直接点exe启动不就好了?
实际情况是,总会遇到各种各样的问题
如果你用过windows开始菜单插件就会知道,很多插件并没有创建完整的上下文,但是很多游戏运行时依赖这个。最典型的就是Start11,很多学习版游戏,你直接添加快捷方式到Start11是有问题的,没法运行完整的上下文,也就是exe获取不到游戏运行目录,导致游戏直接报错不能运行。
再比如,你有台老电视,支持的最大分辨率只有4K30Hz,你玩游戏总要切换成1080P60Hz才行,但是你退出游戏又要切回来4K30Hz看剧,单个exe游戏是可以的,前端+模拟器就麻烦了,很多前端没有改分辨率功能,你运行的时候就会反复黑屏
还有一个最实用的用处是很多小白玩家会把游戏放到中文路径下运行,但是老外的很多模拟器都不支持中文路径,这个时候就需要检测了
如此种种,非常多……
下面列举一些常用代码,供参考:
防止批处理启动时弹出黑窗口
此代码放到脚本最开头。如果只是单纯的启动游戏,可以用这个代码。能防止弹黑窗口
- if "%1"=="hide" goto CmdBegin
- start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
- :CmdBegin
复制代码
检测游戏运行路径是否中文
检测中文路径的方法很多,这里随便举一例
- @echo off
- for /f "delims=" %%i in ('PowerShell '%~dp0' -match '[\u4E00-\u9FFF]'') do set a=%%i
- if "%a%"=="True" (
- echo.安装路径不允许中文路径
- pause
- exit
- )
复制代码
完整上下文,防止Windows插件报错
Start11等插件必备技巧
切换分辨率,刷新率
windows并没有直接提供切换这类参数的批处理指令,但是可以借助第三方工具完成,常见的有:QRes、SetDpi、SetRes
这里以QRes为例:
4K160Hz
- SetRes.exe h3840 v2160 f160
复制代码
1080P60Hz
- SetRes.exe h1920 v1080 f60
复制代码 游戏退出时,执行操作
此代码用于游戏退出时的收尾工作,放到批处理最后即可
- echo %time:~,-3% 监控游戏运行…
- :loop
- timeout /t 2 >nul /nobreak
- tasklist | find /i "游戏文件名.exe" > nul
- if "%errorlevel%"=="1" (
- echo %time:~,-3% 游戏已退出
- 此处编写你要执行的代码
- )
- goto loop
复制代码
游戏开始时,向弹出窗口发送ESC
部分游戏在启动时,会有弹窗,典型如最后生还者2的驱动提示窗口。每次都要手动关闭,这很讨厌。用脚本可以跳过
启动游戏脚本
- @echo off
- cd %~dp0
- start "" "tlou-ii.exe"
- timeout /t 5 /nobreak > nul
- cscript /nologo sendesc.vbs
- echo 已向当前活跃窗口发送 Esc 键。
- timeout /t 5 /nobreak > nul
复制代码 sendesc.vbs
- Set WshShell = CreateObject("WScript.Shell")
- WshShell.SendKeys "{ESC}"
复制代码 当然合并成一个也没问题,就是用echo发送到文件,然后执行完毕,再删了
其他还有很多,想到慢慢补充……
|
|