Как скрыть пакетный вывод
Я делаю последние штрихи пакету script, который передает содержимое локально редактируемого веб-сайта в Интернет.
script открывается в окне консоли и выводит достаточно много информации, которую администратор должен видеть на случай, если что-то пойдет не так. В этом случае, однако, вывод отправляется как E-Mail, поэтому нет необходимости отображать вывод и путать пользователя, который без необходимости запускает обновление. Мне нужно отобразить только несколько строк (скажем, "запуск синхронизации..." и "полная синхронизация" ).
Может ли кто-нибудь подумать о способе остановки вывода в пакете script? Вид полного "эха"?
Простой
my_batch_file > nul
не сократит его, потому что, как я уже сказал, несколько вещей, которые мне нужно показать.
Ответы
Ответ 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
.
Или, наоборот, перенаправлять выходы отдельных частей, которые вы хотите скрывать.