Вы можете создать сопутствующие vbs из пакетного сценария, который отслеживает процесс cmd.exe и вызывает другой пакетный сценарий для завершения нужных процессов. (этот пакетный скрипт-компаньон также может быть создан из вашей основной пакетной программы)
@ECHO OFF
::: Creates a VBS script to monitor the Cmd Process
:CreateMonitor
(
ECHO Set objWMIService = GetObject ("winmgmts:"^) 'Defines winmgmts service
ECHO Set proc = objWMIService.ExecQuery("select * from Win32_Process Where Name='cmd.exe'"^) 'Gets Current Process Count
ECHO DO while proc.count ^> 0 'Establishes Loop that ends when no cmd.exe windows or bat programs are open
ECHO Set proc = objWMIService.ExecQuery("select * from Win32_Process Where Name='cmd.exe'"^) 'Gets Current Process Count
ECHO if proc.count ^< 1 then exit do 'exits while loop once bat program is closed
ECHO wscript.sleep 2500 'Delays loop by 2.5 seconds to reduce CPU usage
ECHO loop 'Returns to get new process Count
ECHO Set WshShell=createobject("wscript.shell"^) 'Creates Shell to
ECHO WshShell.run "INSERT PATH TO TASK-KILL .BAT HERE", 0, false 'Launches hidden .bat to close desired programs
) >"%TEMP%\myprogramMonitor.vbs"
::: Starts the VBS to monitor if cmd.exe is open
Start "" "%TEMP%\myprogramMonitor.vbs"
GOTO :EOF
Целесообразно также включить в сопутствующую партию вспомогательную задачу для процесса WScript:
taskkill /pid WScript.exe /f /t >nul