如何在win7中记录未完成/不响应/挂起命令的输出?

时间:2013-03-12 10:46:48

标签: batch-file command-prompt gnuwin32

我想要重定向命令的控制台输出 事情是命令挂起中途(或多或少),即使输出到控制台,日志文件也是空的。我也尝试了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,我想!

1 个答案:

答案 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