start "UniqueWindowTitle" mycommand < input.txt > output txt
ping -n 2 localhost >nul
taskkill /FI "WINDOWTITLE eq UniqueWindowTitle" /f |find " PID " && (
echo task was killed.
exit /b 31744
) || (
echo there was no task to kill.
echo it terminated in time.
)
К сожалению, taskkill
не возвращает полезный уровень ошибки, поэтому мы анализируем вывод (если задача была убита, это SUCCESS: Sent termination signal to the process with PID 12345
.
В зависимости от вашего реального приложения вам может понадобиться или не понадобиться *Параметр 1005 * («Force»)
Я заменил timeout
на ping-n 2 localhost
, потому что timeout 1
на самом деле не ждет 1 секунду, но пока не наступит «следующая секунда» - что может занять всего несколько миллисекундэкстремальные ситуации.
Кроме того, я искал не «УСПЕХ», а «PID», чтобы он не зависел от языка (нет PID
, когда процесс не найден).