Вопрос

How do I pipe standard error to a file in a DOS batch file? Piping using >> only pipes the standard output and the standard error still goes to the console.

Details of my issue:

I am running WinRAR via command line, in an automated daily backup. And the following example pipes WinRar's output, but not the error output which is what I want most, to winraroutput.txt:

RAR.exe a -esh -r "E:\backup.rar" "D:\*.*" >> winraroutput.txt

The issue is sometimes files are in use and when they are I want to know they were missed in the archive and record this in a .txt file next to each .rar file in case we ever have to go back. The missing files are easily replaced by reinstalling programs so it's no big deal to replace them, as long as we know they are missing. So it's just information that would be great to know, not necessary, in the time of need.

How do I output just the standard error output to the .txt file and, if possible but not necessary, leave the the regular output to the console?

Bonus points:

Bonus points if you can tell me how to delete the file if it's blank (no errors)! Asked here: How do I Detect (and Delete) a File if it is Empty using a Windows Batch File?.

Это было полезно?

Решение

Try this:

   command.exe 2>file.txt

Or if you prefer not to see any errors, send it to nul:

   command.exe 2>nul

This should leave std::cout on the console.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top