Запускй bat через CreaateProcess(). Тогда получишь PID запущенного процесса и легкл миожешь его "убить"
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
windows;
var sInf : TStartupInfo;
pInf : TProcessInformation;
begin
ZeroMemory(@sInf, sizeof(sInf));
CreateProcess('c:\windows\system32\calc.exe', 'OPEN', nil, nil, true, 0, nil, nil, sInf, pInf);
if WaitForSingleObject(pInf.hProcess, 3000) = WAIT_TIMEOUT then
TerminateProcess(pInf.hProcess, 0)
end.
Тут если калькулятор сам не завершится через 3 секунды, его принудительно завершат.
_____
И кстати, ты такой батник пробовал делать?