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