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^>不起作用。任何帮助将不胜感激!
尝试这个:
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)
使用 /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)