Ответы:
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
cm.bat
@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.