重定向exe批处理文件的输出

时间:2008-09-24 10:48:57

标签: c++ visual-c++ batch-file

我想执行某个批处理文件并将其控制台输出重定向到visual c ++中的文本控件,或者在显示日志/回显的同时重定向控制台输出。

3 个答案:

答案 0 :(得分:4)

基本上,您必须使运行过程写入管道,并读取此管道的输出。

[编辑]我知道SciTE是如何做到的(你可以看看源码:win32 / SciTEWin.cxx,ExecuteOne函数),我搜索了一种稍微更通用的方式,从微软本身找到了How to spawn console processes with redirected standard handles
例如,如果您搜索 CreatePipe PeekNamedPipe CreateProcess 关键字,您可能会找到其他示例。

答案 1 :(得分:1)

另一种选择是使用Boost.Process (Boost.Process不是(尚未)官方的Boost C ++库。必须单独下载和安装)

示例“Child.4 - Reading from a child using asynchronous I/O”显示了如何将子进程的输出重定向到C ++流(以后访问内容)。

示例“Child.4 - Reading from a child using asynchronous I/O”显示如何使用Boost.Process与Boost.Asio一起访问子I / O 异步

这种方法的优点是,Boost.Process支持Windows API和POSIX API。

答案 2 :(得分:0)

如果优雅不是优先考虑的话,那么一个非常简单的解决方案可能是将输出重定向到文件,然后读入文件内容。