Как можно ограничить время выполнения программы командной строки в Windows? Я знаю, что в Linux есть время ожидания / ограничения по времени, но я не смог найти аналогичные утилиты для Windows.
9
Как можно ограничить время выполнения программы командной строки в Windows? Я знаю, что в Linux есть время ожидания / ограничения по времени, но я не смог найти аналогичные утилиты для Windows.
Ответы:
Если вы поместите это в блокнот и сохраните, так как
.bat
он создаст командный файл, который сделает это.Я использовал 10 секунд в качестве примера, просто настроить ваши потребности.
Кроме того, если вы используете Vista или выше, вы можете отказаться от
ping
строки и использовать гораздо более легкуюtimeout
команду вместо нее.источник
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
cm.bat
run.bat
Теперь запустите process.bat. он запустит и cm.bat, и run.bat одновременно / параллельно. Когда a.exe из cm.bat завершается; cm.bat убивает run.bat и, таким образом, он будет работать как тайм-аут Ubuntu.
источник