问题描述
如果我有这批:
ScriptA.bat
someprog.exe
还有这个:
ScriptB.bat
CALL ScriptA.bat
然后我执行如下命令:
ScriptB.bat > test.log
someprog.exe
的输出未记录。它流经控制台。如何避免将 someprog.exe
的输出通过管道显式传送到文件,而只是从更高级别捕获它?
(请注意,我最终希望使用大量脚本从这些嵌套内部启动各种 exe,我无法对它们进行全部编辑以重定向它们调用的每个子进程的输出)。
解决方法
我在另一个 SO 线程上找到了答案:
https://stackoverflow.com/a/11955380/3220983
如果阅读问题下的评论,您就会看到,我遇到的问题是我无法捕获的消息根本没有通过管道传输到 stdout 或 stderr!他们通过类似于 CON
重定向的方式从我试图使用的特定可执行文件中直接进入控制台。
我发布的链接显示了如何从批处理脚本启动 PowerShell 脚本,该脚本捕获整个控制台窗口内容,包括 CON
输出!