Запуск пакетного файла Windows управляет асинхронно

Возможно, я не понимаю вопроса, но это звучит выполнимым непосредственно, по крайней мере, в ударе:

( /path/to/slow command with options ) & sleep 5 ; kill $!

Это выполняет первую команду, в круглой скобке, в течение пяти секунд, и затем уничтожает ее. Вся операция работает синхронно, т.е. Вы не будете в состоянии использовать свою оболочку, в то время как это - активное ожидание медленной команды. Если это не то, что Вы хотели, должно быть возможно добавить другой &.

$! переменная является Bash, встроенным, который содержит идентификатор процесса последний раз запущенной подоболочки. Важно не иметь & в круглой скобке делая его тот путь теряет идентификатор процесса.

180
задан Peter Mortensen 9 November 2016 в 05:25
поделиться

3 ответа

Использование команды START для запуска каждой программы должно дать вам то, что вам нужно:

START "title" [/D path] [options] "command" [parameters]

Каждый вызов START запускает команду, указанную в ее параметре и немедленно возвращается, если не выполняется с переключателем / WAIT .

Это относится к приложениям командной строки. Приложения без командной строки в любом случае возвращаются немедленно, поэтому, чтобы быть уверенным, что если вы хотите запускать все асинхронно, используйте START .

249
ответ дан 23 November 2019 в 06:12
поделиться

Создайте командный файл со следующими строками:

start foo.exe
start bar.exe
start baz.exe 

команда запуска запускает вашу команду в новом окне, поэтому все 3 команды будут выполняться асинхронно.

22
ответ дан 23 November 2019 в 06:12
поделиться

Вы можете использовать команду start для запуска фоновых процессов без запуска новых окон:

start / b foo.exe

Новый процесс нельзя будет прервать с помощью CTRL-C; убить его можно только с помощью CTRL-BREAK (или закрыв окно, или через диспетчер задач).

35
ответ дан 23 November 2019 в 06:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: