Відповіді:
start yourprogram.exe
ping 127.0.0.1 -n 10
taskkill /im yourprogram.exe
Якщо ви помістите це в блокнот і збережете його, оскільки .batвін створить пакетний файл, який це зробить.
Я використав 10 секунд як приклад, просто підкоригуйте ваші потреби.
Крім того, якщо ви використовуєте Vista або вище, ви можете перенести pingрядок і використовувати набагато простішу timeoutкоманду на своєму місці
timeout /t 10
start yourprogram.exe yourarguments. Так, це буде taskkillможливість вбити PID, але вам доведеться витягнути його tasklistспочатку на основі імені, яке повертається до квадратного, якщо у вас є кілька примірників. Це лише обмеження в cmd.
> NULдо pingкоманди, щоб зменшити результат.
Як я знаю, здається, що такої функції не існує, але я думаю, що це доцільно, якщо ви змусите її запускати як завдання Windows через Планувальник завдань, звідти ви можете встановити обмеження виконання, налаштування під назвою: Зупиніть завдання, якщо воно запущене довше ніж:, ви можете отримати більш детальну інформацію тут: http://technet.microsoft.com/en-us/library/cc722178.aspx
Якщо вас може турбувати використання PowerShell:
$app = Start-Process -PassThru -FilePath 'notepad' -ArgumentList 'test.txt'запустіть блокнот з аргументом test.txt (ви можете розділити кілька аргументів за ,.
Start-Sleep -Seconds 10 спатиму 10 с.
Або $app.Kill()чи taskkill /PID $app.Idвб'ють запущене застосування.
Якщо ви віддаєте перевагу cmd-рішення, яке буде викликати лише PowerShell, щоб запустити процес, а потім зберегти його PID у змінній: for /F %A in ('powershell -Command "(Start-Process -PassThru -FilePath 'notepad' -ArgumentList 'test.txt').Id"') do set PID=%A(при виклику
з .bat / .cmd ви повинні використовувати %%Aзамість %A). Потім можна використовувати @ BaliC методи виведення тайм-ауту та taskkill /PID %PID%вбивати запущену програму.
Рішення:
У Windows йому потрібно зробити три пакетні файли
process.bat
@ECHO OFF
start /b cm.bat
start cmd.exe /c run.bat
EXIT
см.бат
@ECHO OFF
a.exe < input.txt > out.txt
taskkill /im a.exe /f
taskkill /im cmd.exe /f
EXIT
run.bat
@ECHO off
timeout /t 5
taskkill /im a.exe /f
taskkill /im cmd.exe /f
EXIT
Тепер запустіть process.bat. він запуститься як cm.bat, так і run.bat одночасно / паралельно. Коли a.exe від cm.bat закінчується; cm.bat вбиває run.bat, і, таким чином, він буде працювати як час очікування ubuntu.