Is there any way to redirect stderr output from a

2019-07-04 08:55发布

问题:

I have a program that I want to automate runs for, since it takes awhile to complete. For some reason it outputs everything to stderr instead of stdout, and I'd like to check on its progress, so I find myself needing to redirect stderr output within a start command.

I tried this:

start "My_Program" "C:\Users\Me\my_program.exe" --some --presets --for 
--my_program.exe --output "C:\Users\Me\output_file_for_my_program" 
"C:\Users\Me\input_file_for_my_program" 2>"C:\Users\Me\my_program_output.log"

But it turns out that the redirect is being picked up by start, so that I get a 0-byte file with the result of start - namely, nothing. Is there any way to make the output redirection attach in some way to the output of my_program?

I've experimented with escaping, and neither ^2> nor 2^> seem to work. Any help would be greatly appreciated!

回答1:

Try this:

start "My_Program" "%SystemRoot%\System32\cmd.exe" /c ""C:\Users\Me\my_program.exe" --some --presets --for --my_program.exe --output "C:\Users\Me\output_file_for_my_program" "C:\Users\Me\input_file_for_my_program" 2>"C:\Users\Me\my_program_output.log""

Obviously, not having "My Program" here I can't test this, per se. If we take that the built-in "FIND.EXE" command returns "File not found - filename" on STDERR, the following is working for me:

start "My_Program" "%SystemRoot%\System32\cmd.exe" /c "find /v /i "blarg" "c:\not a real file.txt" 2> C:\stderr.txt"


回答2:

Use /B switch. No new window created and redirections remain, but the command is run in background, just as needed.

start /B test.bat >test.txt <nul

test.bat:

@echo off
echo bbb
sleep 10
echo ccc
exit


回答3:

How about putting the call to your command with the redirects in a batch file, and using start on the batch file?



回答4:

I used the following command and it worked:

start /affinity 2 /wait cmd.exe /C myprog.exe parameter1 parameter2 1^> .\a.log 2>> .\b.log

Ref: http://www.pcreview.co.uk/forums/redirect-standard-output-w-start-command-t1467634.html

Abhishek