我想要重定向命令的控制台输出 事情是命令挂起中途(或多或少),即使输出到控制台,日志文件也是空的。我也尝试了wtee.exe,如:com.exe | %pat%wtee.exe log.txt但它不起作用。我需要一些实时转储控制台的东西。 我几乎可以接受任何解决方案,包括c ++和powershell csript等。
对于记录,我需要它发布一些详细的输出(https://superuser.com/questions/564468/how-can-i-store-encfs6-xml-in-another-location-and-still-make-it-detectable)
提前致谢
更新:
Wohoo工作正常。
显然我必须在运行批处理脚本之前删除日志文件+我必须将stderr重定向到stdout,然后才能像这样管道到wtee.exe:
mycommand.exe 2>&1 | wtee.exe %abspath%log.txt
如果我使用
mycommand.exe 2>&1 | wtee.exe -a %abspath%log.txt
然后我不必每次都删除该文件 有趣的想法有一个赤裸但现在没有必要。流被发送到控制台和日志文件。
非常感谢
UPDATE2:我也使用了gnuwin32标签,因为tee和wtee几乎相同,所以这适用于tee.exe,我想!
答案 0 :(得分:0)
它到底是怎么回事?如果将STDOUT和STDERR重定向到文件(command >log.txt 2>&1
)会发生什么?你还在控制台上获得输出吗?如果是这样,该命令不会写入STDOUT,因此tee
(或wtee
)没有得到任何输入,因为管道将command
的STDOUT与STDIN连接起来tee
。在这种情况下,请尝试重定向手柄3-9,直到找到命令写入的句柄。例如:
command 3>log.txt
您可以通过在寻呼机中显示日志文件来弥补丢失的控制台输出(例如baretail)。
找到句柄后,您可以将其重定向到STDOUT,然后将其导入tee
:
command 5>&1 | tee log.txt