批量“START / WAIT”命令等待程序启动

时间:2017-05-05 22:12:31

标签: batch-file cmd

我不是批处理编码器,但我正在尝试创建一个执行以下操作的脚本:

  • 启用专用视频卡(笔记本电脑NVIDIA卡)
  • 运行特定的视频游戏并等待其结束
  • 游戏终止后,禁用dGPU

以下代码适用于像notepad.exe这样的简单程序,因为它们是不可动摇的:

// enable dedicated GPU
devcon enable "@PCI\VEN_10DE&DEV_1C8C&SUBSYS_8259103C&REV_A1\4&3455E2C8&0&0008"

// start notepad and wait for its termination
start /b /wait "" "C:\Windows\notepad.exe" || goto QUIT

:QUIT

// disable dedicated GPU
devcon disable "@PCI\VEN_10DE&DEV_1C8C&SUBSYS_8259103C&REV_A1\4&3455E2C8&0&0008"

exit

问题在于,如果我为某些重型视频游戏(例如BF1)更改“notepad.exe”需要一些时间才能启动,则脚本不会等待游戏的实际启动并继续执行其他命令。结果是:

  • GPU已开启
  • GPU已关闭(脚本退出)
  • 游戏开始一段时间后(使用英特尔图形)

有没有办法让第二个命令(开始/等待)等待游戏的实际发布?

我需要这个脚本的原因是: NVIDIA Optimus + Windows 10 =微型冻结

PS:对不起我的英语。

1 个答案:

答案 0 :(得分:1)

// start game launcher 
start /b /wait "" "launcherexecutable"
:wait
timeout 5 >nul
tasklist |findstr /i /L /c:"launcherexecutable" /c:"gameexecutable" >nul
if not errorlevel 1 goto wait
:QUIT

应该反复延迟(5秒),然后查看 启动器或游戏可执行文件是否正在运行,如果是,则重复循环。

因此,一旦游戏可执行文件完成,应继续quit

显然,将5更改为其他值或根据需要添加中间可执行文件。