Подтвердить что ты не робот

Как скрыть пакетный вывод

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

script открывается в окне консоли и выводит достаточно много информации, которую администратор должен видеть на случай, если что-то пойдет не так. В этом случае, однако, вывод отправляется как E-Mail, поэтому нет необходимости отображать вывод и путать пользователя, который без необходимости запускает обновление. Мне нужно отобразить только несколько строк (скажем, "запуск синхронизации..." и "полная синхронизация" ).

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

Простой

my_batch_file > nul

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

4b9b3361

Ответ 1

В 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)

Ответ 2

Ваша партия script может запускаться сама

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

stdout второго вызова идет в nul

Ответ 3

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

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