使用批处理文件一个接一个地关闭2个程序

时间:2017-09-12 10:26:06

标签: windows batch-file cmd

我有2个程序,A和B.我制作了一个批处理文件,让它们同时打开,现在我想让它们在我退出程序A时都关闭。

到目前为止,这是我的代码:

@echo off

cd "C:\prog\test"
start A.exe

cd "C:\prog\test"
start B.exe

exit

我无法找到任何不涉及某种计时器的教程。问题是,我不知道在关闭之前我将与他们合作多久。有人可以帮忙吗?

3 个答案:

答案 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}}

的Windows XP

您也可以选择或必要时将Ping -n 30 0.0.0.0>Nul替换为QProcess