4

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

我试过这个:

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 拾取,因此我得到一个 0 字节的文件,其结果为start- 即什么也没有。有什么方法可以使输出重定向以某种方式附加到 my_program 的输出?

我已经尝试过逃跑,但似乎都不管用^2>2^>任何帮助将不胜感激!

4

5 回答 5

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

显然,这里没有“我的程序”,我本身无法测试它。如果我们认为内置的“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"
于 2009-08-21T02:46:27.273 回答
5

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

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

测试.bat:

@echo off
echo bbb
sleep 10
echo ccc
exit
于 2013-08-13T06:35:16.607 回答
2

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

于 2009-08-20T21:08:02.713 回答
2

我使用了以下命令并且它有效:

启动 /affinity 2 /wait cmd.exe /C myprog.exe 参数1 参数2 1^> .\a.log 2>> .\b.log

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

阿布舍克

于 2012-09-03T15:56:31.403 回答
0

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

start /wait /b my_program.exe

这将在后台运行程序并等待它完成。根据您的喜好重定向标准输出和标准错误:

start /wait /b my_program.exe > output.txt 2>&1
于 2020-09-16T17:46:27.673 回答