How to hide batch output

batch-file, windows

Solution

Windows actually does have the notion of stdout and stderr. Here's an example:

test.bat:

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

If you run it as '`test.bat`' you'll get the full output. If you run it as '`test.bat >nul`' then you'll only get the 'important' output (anything redirected to stderr, with the >&2)

Problem

I am putting the finishing touches to a batch script that transfers the contents of a locally edited web site to the internet. The script opens in a console window, and outputs quite a lot of stuff the administrator needs to see in case something goes wrong. In that case, though, the output is being sent as E-Mail, so there is no need to display the output and confuse the user who runs the update unnecessarily. I need to display only a few lines (say, "starting synchronisation..." and "syncrhonisation complete"). Can anybody think of a way to stop output in a batch script? Kind of a total "echo off"? A simple ``` my_batch_file > nul ``` won't cut it, because as I said, a few things I need to show.

Original source