有什么方法可以重定向 Windows 命令行中使用“start”运行的命令的 stderr 输出吗?

4 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"
Run Code Online (Sandbox Code Playgroud)

但事实证明,重定向是由 start 获取的,因此我得到了一个 0 字节文件,其结果是start- 即什么也没有。有没有办法使输出重定向以某种方式附加到 my_program 的输出?

我尝试过逃跑,但似乎^2>2^>不起作用。任何帮助将不胜感激!

Eva*_*son 5

尝试这个:

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""
Run Code Online (Sandbox Code Playgroud)

显然,这里没有“我的程序”,我本身无法测试它。如果我们认为内置的“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"
Run Code Online (Sandbox Code Playgroud)


bas*_*sin 5

使用 /B 开关。不会创建新窗口,也不会保留重定向,但该命令会根据需要在后台运行。

start /B test.bat >test.txt <nul
Run Code Online (Sandbox Code Playgroud)

测试.bat:

@echo off
echo bbb
sleep 10
echo ccc
exit
Run Code Online (Sandbox Code Playgroud)