Возможно, я не понимаю вопроса, но это звучит выполнимым непосредственно, по крайней мере, в ударе:
( /path/to/slow command with options ) & sleep 5 ; kill $!
Это выполняет первую команду, в круглой скобке, в течение пяти секунд, и затем уничтожает ее. Вся операция работает синхронно, т.е. Вы не будете в состоянии использовать свою оболочку, в то время как это - активное ожидание медленной команды. Если это не то, что Вы хотели, должно быть возможно добавить другой &.
$!
переменная является Bash, встроенным, который содержит идентификатор процесса последний раз запущенной подоболочки. Важно не иметь & в круглой скобке делая его тот путь теряет идентификатор процесса.
Использование команды START
для запуска каждой программы должно дать вам то, что вам нужно:
START "title" [/D path] [options] "command" [parameters]
Каждый вызов START
запускает команду, указанную в ее параметре и немедленно возвращается, если не выполняется с переключателем / WAIT
.
Это относится к приложениям командной строки. Приложения без командной строки в любом случае возвращаются немедленно, поэтому, чтобы быть уверенным, что если вы хотите запускать все асинхронно, используйте START
.
Создайте командный файл со следующими строками:
start foo.exe
start bar.exe
start baz.exe
команда запуска запускает вашу команду в новом окне, поэтому все 3 команды будут выполняться асинхронно.
Вы можете использовать команду start для запуска фоновых процессов без запуска новых окон:
start / b foo.exe
Новый процесс нельзя будет прервать с помощью CTRL-C; убить его можно только с помощью CTRL-BREAK (или закрыв окно, или через диспетчер задач).