[英]Is there any way to redirect stderr output from a command run with “start” in the Windows command line?
[英]Is there any way to redirect stderr output from a command run with "start" in the Windows command line?
我有一个程序要自动运行,因为它需要一段时间才能完成。 出于某种原因,它将所有内容输出到 stderr 而不是 stdout,我想检查它的进度,所以我发现自己需要在 start 命令中重定向 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"
但事实证明,重定向是由 start 获取的,因此我得到了一个带有start
结果的 0 字节文件 - 即什么都没有。 有没有办法让输出重定向以某种方式附加到 my_program 的输出?
我已经尝试过转义,但^2>
和2^>
似乎都不起作用。 任何帮助将不胜感激!
尝试这个:
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 上返回“找不到文件 - 文件名”,则以下内容对我有用:
start "My_Program" "%SystemRoot%\System32\cmd.exe" /c "find /v /i "blarg" "c:\not a real file.txt" 2> C:\stderr.txt"
使用 /B 开关。 没有创建新窗口并保留重定向,但该命令会根据需要在后台运行。
start /B test.bat >test.txt <nul
测试.bat:
@echo off
echo bbb
sleep 10
echo ccc
exit
我使用了以下命令并且它有效:
start /affinity 2 /wait cmd.exe /C myprog.exe parameter1 parameter2 1^> .\\a.log 2>> .\\b.log
参考: http : //www.pcreview.co.uk/forums/redirect-standard-output-w-start-command-t1467634.html
阿布舍克
如何通过批处理文件中的重定向调用您的命令,并在批处理文件上使用 start?
以下语法似乎可以解决问题:
start /wait /b my_program.exe
这会在后台运行程序并等待它完成。 根据需要重定向 stdout 和 stderr:
start /wait /b my_program.exe > output.txt 2>&1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.