1

我想要重定向命令的控制台输出。
问题是命令中途挂起(或多或少),即使它输出到控制台,日志文件也是空的。我也尝试过这样的 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-可检测

提前致谢

更新:

哇哦,它的工作原理。
显然,我必须在运行批处理脚本之前删除日志文件 + 在管道到 wtee.exe 之前,我必须将 stderr 重定向到 stdout,如下所示:

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,我想!

4

1 回答 1

0

它究竟是如何“不起作用”的?如果将 STDOUT 和 STDERR 重定向到文件 ( command >log.txt 2>&1) 会发生什么?你还在控制台上得到输出吗?如果是这样,该命令不会写入 STDOUT,因此tee(或wtee就此而言)不会获得任何输入,因为管道将 STDOUTcommandtee. 在这种情况下,尝试重定向句柄 3-9,直到找到命令写入的句柄。例子:

command 3>log.txt

您可以通过在寻呼机(例如baretail)中显示日志文件来弥补缺少的控制台输出。

找到句柄后,您可以将其重定向到 STDOUT,然后将其通过管道传输到tee

command 5>&1 | tee log.txt
于 2013-03-12T11:52:07.193 回答