Эквивалент (foo &>/dev/null &) в оболочке Windows

Эквивалент (foo &>/dev/null &) в оболочке Windows

Я хотел бы запустить определенное приложение (назовем его foo) из командной строки, но я не хочу, чтобы оно задерживало терминал, помещая в него всякий мусор из своего вывода или потоков ошибок, и также хочу, чтобы оно продолжало работать, даже если я закрою этот терминал. В Bash я могу сделать это с помощью (foo &>/dev/null &), но я не знаю, как это сделать в оболочке Windows. Может ли кто-нибудь мне помочь?

решение1

В Windows это можно сделать следующим образом:

start /B foo > NUL 2>&1

Команда startзапустит отсоединенный процесс, эффект аналогичен &. /BПараметр предотвращает startоткрытие нового окна терминала, если запущенная вами программа является консольным приложением (для приложений с графическим интерфейсом это необязательно). Имеет >то же значение, что и в Linux, и NULявляется эквивалентом в Windows /dev/null. 2>&1Вконецперенаправит stderr в stdout, который будет отправлен в NUL.

решение2

Прямого эквивалента не существует.

Как описаноздесь, вызов программы таким образом, чтобы не блокировать вызывающую программу, можно сделать с помощью startкоманды, используя /bопцию. Не знаю насчет перенаправления вывода в этом случае. Возможно, вам придется обернуть это в пакетный файл.

Что касается > /dev/null, то тут все просто: >NUL. NUL— это имя устройства DOS. Однако оператор сокращения недоступен. Вам придется действовать вручную с помощью 2>&1.ЗдесьВот еще информация по этому поводу.

Связанный контент