支持资源

支持资源

@echo off
:loop
(tasklist /fi "IMAGENAME eq RocketLeague.exe"| findstr /I "RocketLeague.exe")>nul|| taskkill /f /im BakkesMod.exe
timeout /t 2
goto :loop

附加的批处理文件检查某个程序(R)是否正在运行;如果该程序(R)未运行,它将终止另一个程序(B)。我怎样才能使批处理文件执行该命令(在本例中开始, 不是任务终止一次 什么时候 程序(右) 跑步 反而

答案1

使用&&代替||。定义如下:

  • && 仅当前一个命令的错误级别为 0 时才执行第二个命令

  • || 仅当前一个命令的错误级别不为 0 时才执行第二个命令

答案2

这里有一些批处理代码,可能会给你一个更好的起点。如果这不能 100% 满足你的需要,它可能已经足够接近,你可以让它工作。

如果两个进程都在运行,那么与其让例程使用,不如GOTO :EOF简单地告诉哪个例程GOTO :CheckRisRunning从头开始启动该进程。

如果您需要在启动一个进程之后再启动另一个进程或者在逻辑中的任何其他地方进行第二次延迟,则在下一次调用之前timeout将其添加到命令下方也是如此- 只需进行简单的调整即可确定您到底需要它如何工作。call2

本质上这...

  • 检查是否RocketLeague.exe在内存中运行

    • 如果不是,它就会按照:StartB惯例
    • 如果是,它会设置一个计数变量,1并进入:CheckBisRunning例程
  • 例程:CheckBisRunning检查是否BakkesMod.exe在内存中运行

    • 如果不是,它就会按照:StartB惯例
    • 如果是,则将其添加1到计数器变量并转到:CheckCount例程
  • :CheckCount例程检查 count 变量是否等于2

    • 如果不是,它就会按照:StartB惯例
  • :StartB例程将终止内存中运行的所有实例,等待RocketLeague.exe几 秒钟,然后启动,然后 再次启动,以便两者都启动BakkesMod.exe2RocketLeague.exeBakkesMod.exe

@ECHO OFF

:CheckRisRunning
SET /A "c=0"
TASKLIST | FINDSTR /I "RocketLeague.exe"
IF ERRORLEVEL 1 (GOTO :StartB) ELSE (SET /A "c+=1" & GOTO :CheckBisRunning)
GOTO :EOF

:CheckBisRunning
TASKLIST | FINDSTR /I "BakkesMod.exe"
IF ERRORLEVEL 1 (GOTO :StartB) ELSE (SET /A "c+=1" & GOTO :CheckCount)
GOTO :EOF

:CheckCount
if NOT %c%==2 GOTO :StartB
timeout /t 2
GOTO :CheckRisRunning

:StartB
taskkill /f /im "RocketLeague.exe"
taskkill /f /im "BakkesMod.exe"
timeout /t 2
Start "" "C:\Folder\Path\RocketLeague.exe"
timeout /t 2
Start "" "C:\Folder\Path\BakkesMod.exe"
GOTO :CheckRisRunning

支持资源

答案3

@echo off

:checkifRocketLeagueisrunning
SET /A "c=0"
TASKLIST | FINDSTR /I "RocketLeague.exe"
IF ERRORLEVEL 1 (SET /A "c+=3" & GOTO addtocount) ELSE (SET /A "c+=1" & GOTO checkifBakkesModisrunning)

:addtocount
SET /A "c+=3"
GOTO checkcount1

:checkcount1
IF %c%==6 (GOTO killBakkesMod) ELSE (SET /A "c=0" & GOTO loopredirect1)

:killBakkesMod
TASKKILL /F /IM BakkesMod.exe
SET /A "c=0"
GOTO checkifRocketLeagueisrunning

:loopredirect1
GOTO checkifRocketLeagueisrunning

:checkifBakkesModisrunning
TASKLIST | FINDSTR /I "BakkesMod.exe"
IF ERRORLEVEL 1 (SET /A "c+=1" & GOTO checkcount2) ELSE (SET /A "c=0" & GOTO loopredirect2)

:loopredirect2
GOTO checkifRocketLeagueisrunning

:checkcount2
IF %c%==2 (GOTO startBakkesMod) ELSE (SET /A "c=0" & GOTO loopredirect3)

:loopredirect3
GOTO checkifRocketLeagueisrunning

:startBakkesMod
START "" "%USERPROFILE%\AppData\Roaming\bakkesmod\bakkesmod\BakkesMod.exe"
SET /A "c=0"
GOTO checkifRocketLeagueisrunning


非常感谢你的帮助!最后我自己解决了这个问题,这也要感谢你的建议(上面附有代码)。我使用高级 BAT 到 EXE 转换器,所以这里是直接链接下载安装文件,因为这个应用程序对所有 Epic Games Rocket League PC 玩家都有用,因为它可以在玩 Rocket League 时自动执行 BakkesMod 过程(Rocket League 启动时 BakkesMod 会自动启动,Rocket League 停止时 BakkesMod 会自动停止)。



下载 Setup.exe 时

也许你的电脑会将此设置识别为病毒,但是实际上这是假阳性真的!我永远不会分享病毒。如果你的电脑检测到它是病毒,请选择“保留”以在下载时保留文件,停用您自己的防病毒软件,然后尝试打开它,如果你的 PC 再次阻止它,请打开 Windows Defender 并对每个识别到的相关威胁选择“允许”之后,如果你找不到安装程序,请重新下载。当你打开它时,您必须点击“更多信息”,然后选择“仍然运行”. 当安装过程完成后,您可以删除Setup.exe。



在启动 BakkesModprocessautomation.exe 之前

为了让它工作,你必须有此文件夹中的所有 BakkesMod 主文件 (BakkesMod.exe、unins000.exe、unins000.dat),%USERPROFILE%\AppData\Roaming\bakkesmod\bakkesmod,因为该软件也将在那里工作。它已经配置为在 PC 启动时运行,因此安装后您无需对它执行任何操作。当您启动它时,它将是不可见的,将永远在后台运行,并且只能通过任务管理器(通过终止 BakkesModprocessautomation.exe)或通过命令(如“taskkill /f /im BakkesModprocessautomation.exe”)手动停止。

相关内容