我正在使用Microsoft命令行实用程序来执行任务。 公用事业的具体细节和执行的任务,我认为是相对不重要的。 这是重要的:
命令行实用程序将文本发送到控制台窗口。 我不知道如何将这个文本redirect到一个文件,尽pipe我已经尝试了所有可以通过研究find的方法。 看来该实用程序正在使用一些奇怪的OS函数调用,导致文本打印方式不受正常的redirect手段。 我正在使用Windows 7 cmd.exe控制台窗口。
这些结构中没有一个redirect有问题的文本输出:
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个输出stream ,但是也没有完成任务。
我可以使用控制台窗口的“编辑”>“标记select和复制”function来复制文本,但是我需要以无头方式捕获该程序的输出,以便自动化。
我无法find任何专门打印到控制台的绕过redirect的OS函数调用。 这样的function是否存在? 这个工具如何设法绕过redirect? 我能用什么方法来捕捉这个工具的输出?
我也试过DbgView,也许这可能包含输出消息,但事实并非如此。
该实用程序不是一个graphics工具。 这显然是一个文本模式程序,可能用C或C ++编写。 它是由微软写的。
没有什么特别神奇的。 尽管C库默认将输出发送到标准输出句柄,但程序没有义务这样做; 您可以随时打开自己的控制台输出设备( CONOUT$
)。
有关控制台设备的更多信息,请参阅有关CreateFile
的文档。
就捕获输出而言,您可能可以使用ReadConsoleOutput
和朋友做些事情,但这并不简单。