繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM