Відповіді:
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.