There are 2 output streams: stdout (standard output console) and stderr (standard error console).
With >nul
or more correct 1>nul
the text written to stdout is redirected to the null device.
With 2>nul
the text written to stderr is redirected to the null device.
>nul
and 2>nul
can be used on any command and also both at the same time and should be always at end of the line. They can be also used at beginning of a line which makes sense in some special cases, but most often the redirecting operators are written at end of a line.
Most console commands and applications print a help when running with option /?
(Windows) or -?
(when ported from Unix). Open a command prompt window and try that with xcopy /?
Some commands like xcopy have special options to suppress output to stdout. The option for xcopy is /Q
which is short for quiet. Using this option makes xcopy also faster a little bit as printing the output to stdout needs some time and is of course wasted time if the output is redirected to null device.
But take care of possible halt on errors when redirecting all output to null device. For example on using xcopy the options /C
and /R
should be used additionally to avoid a halt of the copy process on error or a read-only file in target directory with no information of the user who started the copy process why batch job does not finish because of using /Q
and additional >nul 2>nul
.
In batch files always >nul
should be used and never 1>nul
although that is often also possible. The command line interpreter replaces every >nul
on execution of the batch file automatically by 1>nul
(space + 1>nul
). This should be taken into account when echo something into a file to avoid an often unwanted trailing space on each line redirected into a file.
See Microsoft article Using command redirection operators for even more information.