How do I send a message to stderr from cmd?

Batch FileCmd

Batch File Problem Overview


In a standard windows .cmd file I can send messages to stdout simply by doing:

echo message

How can I send a message to stderr?

Example:

Let's say I have the script parent.cmd containing:

call child.cmd 1>>stdout.log 2>>stderr.log

and a child containing:

:: Writes a message to stdout 
:: (which in the parent is piped to stdout.log)
echo message

:: Now I want to write a message to stderr 
:: (which in the parent is piped to stderr.log)
???

Batch File Solutions


Solution 1 - Batch File

You can try redirecting the handle of STDOUT to the handle of STDERR. In your child process, perform the echo with a handle redirect:

:: Writes a message to stdout 
:: (which in the parent is piped to stdout.log)
echo message

:: Now I want to write a message to stderr 
:: (which in the parent is piped to stderr.log)
echo message 1>&2

Microsoft 'splainin it

Solution 2 - Batch File

Try echo message 1>&2

I've just tried this and it seems to work correctly, even from within a batch file.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionsteenhulthinView Question on Stackoverflow
Solution 1 - Batch FiledolphyView Answer on Stackoverflow
Solution 2 - Batch Fileuser7094View Answer on Stackoverflow