3

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

2 ответа2

5

В Windows это можно сделать так:

start /B foo > NUL 2>&1

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

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .