有没有办法在Windows命令行中使用“start”从命令运行重定向stderr输出?

时间:2009-08-20 20:59:49

标签: windows redirect command stderr

我有一个程序,我想自动运行,因为它需要一段时间才能完成。由于某种原因,它将所有内容输出到stderr而不是stdout,我想检查它的进度,所以我发现自己需要在启动命令中重定向stderr输出。

我试过了:

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"

但事实证明,重定向正在被启动拾取,因此我得到一个0字节的文件,结果为start - 即没有。有没有办法让输出重定向以某种方式附加到my_program的输出?

我已尝试逃避,^2>2^>似乎都无法正常工作。任何帮助将不胜感激!

5 个答案:

答案 0 :(得分:4)

试试这个:

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""

显然,这里没有“我的程序”我本身无法测试。如果我们认为内置的“FIND.EXE”命令在STDERR上返回“File not found-filename”,则以下内容对我有用:

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

答案 1 :(得分:3)

使用/ B开关。没有创建新窗口并保留重定向,但命令在后台运行,只是需要。

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

test.bat的:

@echo off
echo bbb
sleep 10
echo ccc
exit

答案 2 :(得分:2)

如何使用批处理文件中的重定向调用命令,并在批处理文件上使用start?

答案 3 :(得分:2)

我使用了以下命令,它起作用了:

start / affinity 2 / wait cmd.exe / C myprog.exe parameter1 parameter2 1 ^&gt; 。\ a.log 2&gt;&gt; \ b.log

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

阿布舍克巴克

答案 4 :(得分:0)

以下语法似乎可以解决问题:

start /wait /b my_program.exe

这将在后台运行程序并等待其完成。根据需要重定向stdout和stderr:

start /wait /b my_program.exe > output.txt 2>&1