Cmd 重定向后继续捕获输出

Cmd 重定向后继续捕获输出,cmd,Cmd,好的,这里有一个难题--我很好地捕获了cmd.exe的输出,从管道中读取,yadda yadda yadda,但随后cmd.exe批处理文件中的一行大胆地执行以下操作: 目录err.txt>zz 。。也就是说,它重定向dir命令的输出,这是cmd.exe内部的一个内部命令 问题是,这破坏了我对输出的捕获!在那之后,我无法从cmd.exe获得任何信息 显然,为了重定向标准输出,它会关闭标准输出,或者以某种方式破坏标准输出,并生成一个新的标准输出来重定向输出。而且它永远不会恢复旧的stdout句柄

好的,这里有一个难题--我很好地捕获了cmd.exe的输出,从管道中读取,yadda yadda yadda,但随后cmd.exe批处理文件中的一行大胆地执行以下操作:

目录err.txt>zz

。。也就是说,它重定向dir命令的输出,这是cmd.exe内部的一个内部命令

问题是,这破坏了我对输出的捕获!在那之后,我无法从cmd.exe获得任何信息

显然,为了重定向标准输出,它会关闭标准输出,或者以某种方式破坏标准输出,并生成一个新的标准输出来重定向输出。而且它永远不会恢复旧的stdout句柄


您知道如何跟踪此输出吗?

您应该在单独的过程中调用
dir err.txt
。请尝试
call dir err.txt>zz

如果允许修改批处理文件,可以使用命令替换内部重定向

Windows有多个端口(只有google“”)

来自维基百科: 在计算中,tee是各种命令行解释器(shell)中的一个命令 例如Unix Shell、4DOS/4NT和Windows PowerShell,它们显示或显示管道
命令的输出并将其复制到文件或变量

调用
不会使用单独的过程。在这种情况下,您需要
cmd/c“direrr.txt>zz”