Как скрыть пакетный вывод - PullRequest
24 голосов
/ 11 января 2010

Я добавляю последние штрихи к пакетному сценарию, который передает содержимое локально отредактированного веб-сайта в Интернет.

Сценарий открывается в окне консоли и выводит довольно много информации, которую администратор должен увидеть на случай, если что-то пойдет не так. Однако в этом случае выходные данные отправляются в виде электронной почты, поэтому нет необходимости отображать выходные данные и вводить пользователя в заблуждение, который запускает обновление без необходимости. Мне нужно отобразить только несколько строк (скажем, «запуск синхронизации ...» и «синхронизация завершена»).

Кто-нибудь может придумать, как остановить вывод в пакетном скрипте? Вид полного "эха выкл"?

Простой

my_batch_file > nul

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

Ответы [ 3 ]

36 голосов
/ 12 января 2010

Windows на самом деле имеет понятие stdout и stderr. Вот пример:

test.bat:

@echo off
echo verbose stuff 1
echo verbose stuff 2
echo verbose stuff 3
echo important stuff! >&2
echo verbose stuff 4

Если вы запустите его как 'test.bat', вы получите полный вывод. Если вы запустите его как 'test.bat >nul', тогда вы получите только 'важный' вывод (все, что перенаправлено на stderr, с> & 2)

8 голосов
/ 12 января 2010

ваш пакетный скрипт может выполняться сам

@echo off
if "%1" == "1" goto else
echo start
call %0 1 > nul
echo done
goto done
:else:
echo do stuff
:done:

стандартный вывод второго вызова переходит в nul

0 голосов
/ 11 января 2010

Вы можете написать несколько вещей, которые нужно отобразить в stderr вместо stdout.

Или, альтернативно, перенаправьте выходы отдельных частей, которые вы хотите скрыть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...