Я хотел бы запустить конкретное приложение (давайте назовем его foo
) из командной строки, но я не хочу, чтобы оно удерживало терминал, помещало в терминал любой мусор из его потоков вывода или ошибок, а также хотело бы, чтобы оно продолжайте работать, даже если я закрою указанный терминал. В Bash я могу сделать это с помощью (foo &>/dev/null &)
, но я не знаю, как бы это сделать в оболочке Windows. Может ли кто-нибудь помочь мне?
2 ответа
В Windows это можно сделать так:
start /B foo > NUL 2>&1
Команда start
запустит отдельный процесс, эффект, аналогичный &
. Параметр /B
запрещает start
открытия нового окна терминала, если программа, которую вы запускаете, является консольным приложением (это не нужно для приложений с графическим интерфейсом). Значение >
имеет то же значение, что и в Linux, а NUL
является эквивалентом Windows для /dev/null
. 2>&1
в конце перенаправят stderr в stdout, который все перейдет в NUL
.
Прямого эквивалента нет.
Как описано здесь, вызов программы способом, который не блокирует вызывающего, можно выполнить с помощью команды start
с помощью параметра /b
. Не знаю о перенаправлении вывода в этом случае, хотя. Возможно, вам придется обернуть его в пакетный файл.
Что касается > /dev/null
, это просто: >NUL
. NUL
- это имя устройства DOS. Оператор стенографии, однако, недоступен. Вам придется идти ручным путем с 2>&1
. Вот еще немного информации об этом.