我有2个程序,A和B.我制作了一个批处理文件,让它们同时打开,现在我想让它们在我退出程序A时都关闭。
到目前为止,这是我的代码:
@echo off
cd "C:\prog\test"
start A.exe
cd "C:\prog\test"
start B.exe
exit
我无法找到任何不涉及某种计时器的教程。问题是,我不知道在关闭之前我将与他们合作多久。有人可以帮忙吗?
答案 0 :(得分:0)
如下所示:Batch script - Run exe program one after another
在这里: Parallel execution of shell processes
是您需要的解决方案。
答案 1 :(得分:0)
沿着这条线的东西。
@echo off
START
cd "C:\prog\test\"
startA.exe && startB.exe
:TEST
tasklist /FI "IMAGENAME eq startA.exe" 2>NUL | find /I /N "startA.exe">NUL
if "%ERRORLEVEL%"=="0" goto ACTIVE
:DEAD
taskkill /f /im startB.exe
exit
:ACTIVE
timeout /T 10
goto TEST
所以要解释一下。
启动程序,然后使用任务列表测试startA.exe
。如果任务返回Errorlevel == 0,则表示它正在运行。然后我们发送到等待部分10秒钟,然后返回测试startA.exe是否正在运行。但是,如果errorlevel不为0,它将直接转到DEAD并终止startB.exe
答案 2 :(得分:0)
这是一个未经测试的例子。
它的工作原理是接受游戏iso的名称作为输入参数,例如“C:\ MyGames \ Game1 \ game1.iso”,(可以拖放到脚本上)。
@Echo Off
Set "VDX=%ProgramFiles%\RES Software\VDX Engine\VDX_x64.exe"
Set "EMU=%SystemDrive%\Emulators\Sony\pcsx2-v1.3.1\"
Set "EXE=pcsx2.exe"
Start "" "%VDX%"
Start "" "%EMU%%EXE%" --nogui --fullscreen "%~1"
:Loop
Timeout 30 /NoBreak>Nul
QProcess|FindStr/IRC:"\<%EXE%\>">Nul&&(GoTo Loop
)||TaskKill/T /F /IM "%EXE%">Nul
请随时在Set
语句中更改路径(确保保留结束双引号)。
我决定每30秒执行一次检查,如果您希望更改该检查,请将30
中的Timeout 30
替换为您的偏好。如果您使用的是没有Timeout
替换Timeout 30
的{{1}}
您也可以选择或必要时将Ping -n 30 0.0.0.0>Nul
替换为QProcess