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!
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"
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
How about putting the call to your command with the redirects in a batch file, and using start on the batch file?
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