我正在使用 Microsoft 命令行实用程序来执行任务。我认为,该实用程序的功能和执行的任务的具体细节相对不重要。这很重要:
命令行实用程序将文本发送到控制台窗口。尽管我已经尝试了通过研究找到的所有方法,但我无法弄清楚如何将此文本重定向到文件。该实用程序似乎正在使用一些奇怪的操作系统函数调用,导致以不受正常重定向方式影响的方式打印文本。我正在使用 Windows 7 cmd.exe 控制台窗口。
这些构造都没有重定向有问题的文本输出:
util.exe >log.txt
util.exe 2>err.txt
util.exe >log.txt 2>&1
util.exe 1>log.txt 2>err.txt
util.exe 1>log.txt 2>err.txt 3>3.txt 4>4.txt 5>5.txt 6>6.txt 7>7.txt 8>8.txt 9>9.txt
对最后一个感到困惑? 原来在 Windows-land 中有 10 个输出流,但这也没有完成工作。
我可以使用控制台窗口的编辑>标记选择和复制功能复制文本,但我需要以无头方式捕获该程序的输出,以便它可以自动化。
我找不到任何专门绕过重定向打印到控制台的操作系统函数调用。有这样的功能吗?该实用程序如何设法规避重定向?我可以使用什么方法来捕获该实用程序的输出?
我也尝试了 DbgView,认为它可能包含输出消息,但它没有。
该实用程序不是图形实用程序。它很明显是一个文本模式程序,可能是用 C 或 C++ 编写的。它是由微软编写的。