![制作一个 bat 文件,让某个程序运行,然后启动另一个程序](https://linux22.com/image/1375911/%E5%88%B6%E4%BD%9C%E4%B8%80%E4%B8%AA%20bat%20%E6%96%87%E4%BB%B6%EF%BC%8C%E8%AE%A9%E6%9F%90%E4%B8%AA%E7%A8%8B%E5%BA%8F%E8%BF%90%E8%A1%8C%EF%BC%8C%E7%84%B6%E5%90%8E%E5%90%AF%E5%8A%A8%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%A8%8B%E5%BA%8F.png)
我目前正在尝试创建一个批处理文件来启动一些程序。这可以通过命令“start”轻松完成,但它运行的最后一个程序只有在第一个程序的窗口处于活动状态时才有效。
我尝试在最后一个程序之前使用延迟。但第一个程序每次使用的启动延迟并不相同,因此有时我需要较长的延迟,有时需要较短的延迟。
因此,我认为我必须让代码等待进程运行,并添加了一行代码来实现这一点。但有时第一个程序的进程运行而窗口没有处于活动状态(在上述长时间延迟的情况下),因此延迟结束,最后一个程序无法启动。
现在我展示一下我的批处理文件目前的样子:
@ECHO OFF
start ..\pgr1.exe {First Program}
start ..\prg2.exe {Second Program}
:LOOP
C:\Windows\System32\tasklist.exe /FI "IMAGENAME eq prg1.exe" | {Get Tasklist}
C:\Windows\System32\find.exe /i "prg1.exe" {Find First Program Process}
IF ERRORLEVEL 2 GOTO ROLL {Process Found}
IF ERRORLEVEL 1 GOTO LOOP {Process not Found}
:ROLL
call Delayer5.exe {Wait 5 secconds}
start ..\prg1_pluginloader.exe {Program that needs prg1.exe to be active}
cls
答案1
您仍然可以tasklist.exe
像这样使用:
tasklist.exe /FI "IMAGENAME eq prg1.exe" /V | findstr "Your Window Title"
/V
将打印与进程关联的窗口的窗口标题,因此您可以使用该检查来控制循环。