Mik*_*ark 5 windows stdout stderr io-redirection
我正在使用Microsoft命令行实用程序执行任务。我认为,实用程序的功能及其执行的任务的具体细节相对来说并不重要。这很重要:
命令行实用程序将文本发送到控制台窗口。尽管我尝试了所有可以通过研究找到的方法,但是我无法弄清楚如何将文本重定向到文件。似乎该实用程序正在使用一些奇怪的OS函数调用,从而导致以不受常规重定向方式约束的方式来打印文本。我正在使用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
Run Code Online (Sandbox Code Playgroud)
对最后一个感到困惑吗? 事实证明,在Windows-land中有10个输出流,但这也没有完成任务。
我可以使用控制台窗口的“编辑”>“标记选择并复制”功能来复制文本,但是我需要以无头方式捕获该程序的输出,以便使其自动化。
我找不到任何专门绕过重定向打印到控制台的OS函数调用。是否存在这样的功能?该实用程序如何设法规避重定向?我可以使用什么方法来捕获该实用程序的输出?
我还尝试了DbgView,认为可能包含输出消息,但没有。
该实用程序不是图形实用程序。很显然,这是一个文本模式程序,可能是用C或C ++编写的。它是由Microsoft编写的。
它没有什么特别神奇的地方。尽管 C 库默认将输出发送到标准输出句柄,但程序没有义务这样做;您始终可以打开自己的控制台输出设备句柄 ( CONOUT$)。
CreateFile有关控制台设备的更多信息,请参阅 文档。
在捕获输出方面,您也许可以与ReadConsoleOutput朋友一起做一些事情,但这并不简单。
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |