Я хотел бы запустить конкретное приложение (давайте назовем его 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 . Вот еще немного информации об этом.
