Redirect ' all ' output to a single file:
Run:
Test.bat > Test.txt 2>&1
And you'll get the This text on screen (we'll never get rid of this in screen, as it's sent to the Console and cannot be redirected):
This text goes to the Console
You should also get a file named Test.txt with the following content:
This text goes to standard outputthis text goes to standard Error
Note:THe commands
test.bat > test.txt 2>&1
test.bat 1> test.txt 2>&1
test.bat 2> test.txt 1>&2
All give identical results.
Redirect errors to a separate error log file:
Run:
Test.bat > Testlog.txt 2> testerrors.txt
And you'll get the This text on screen (we'll never get rid of this in screen, as it's sent to the Console and cannot be redirected):
This text goes to the Console
You should also get a file named Testlog.txt with the following content:
This text goes to standard Output
And another file named Testerrors.txt with the following content:
This text goes to standard Error
Some "Best practices" when using the redirection in batch files:
Use >filename.txt 2>&1
-to-merge standard Output and standard Error and redirect them together-a single file.
Make sure to the redirection "commands" in this order.
Use the >logfile.txt 2>errorlog.txt
redirect success and error messages to separate log files.
Use >CON
to send text to the screen, no matter what, even if the batch file's output is redirected.
This could was useful when prompting for input even if the batch file ' s output was being redirected to a file.
Use 1>&2
-to-send text to standard Error.
This can is useful for error messages.
It ' s OK to use spaces in redirection commands. Note However, that a space between an ECHO command and a would be >
redirected too.
DIR>filename.txt
And DIR > filename.txt
is identical, ECHO Hello world>filename.txt
and ECHO Hello world > filename.txt
is not, even though they is both valid.
It is a not OK to use spaces in or OR or >>
2>
2>&1
1>&2
(before or after is OK).
-
In Windows Nt 4, early Windows $ versions, and OS/2 there used to being some ambiguity with echoed lines Endin G with a 1 or 2, immediately followed by a ;
:
ECHO Hello world2> file.txt
would result in an empty file file.txt and the text Hello world
(without the trailing "2") on screen (CMD. EXE would interpret it as echo hello world 2> file.txt
).
in Windows XP The result was no text on screen and file.txt containing the line Hello&nbs P;world2
, including the trailing "2" (CMD. EXE interprets it as Echo hello world2 > file.txt
).
to prevent the ambiguity, either use parentheses or insert an extra space yourself:
ECHO Hello World2 > file.txt
(ECHO Hello World2) file.txt
"Merging" standard Output and standard Error with 2>&1
can also is used to pipe a command's output to another CO Mmand ' s standard Input:
somecommand 2>&1 | someothercommand