如何在Windows命令提示符中运行命令行应用程序,同时显示输出并将输出重定向到文件?

例如,如果我要运行命令dir > test.txt,这将把输出重定向到一个名为test.txt的文件,而不显示结果。

我如何写一个命令来显示输出并将输出重定向到Windows命令提示符中的文件,类似于Unix上的tee命令?


当前回答

就像unix一样。

目录 |茶A.txt

在windows XP上,它需要安装mksnt。

它显示在提示符上,并附加到文件中。

其他回答

另一种选择是在程序中tee stdout到stderr:

在java中:

System.setOut(new PrintStream(new TeeOutputStream(System.out, System.err)));

然后,在你的dos批处理文件:java程序> log.txt

标准输出将转到日志文件,标准derr(相同的数据)将显示在控制台上。

我在我的大多数机器上安装perl,所以答案使用perl: tee.pl

my $file = shift || "tee.dat";
open $output, ">", $file or die "unable to open $file as output: $!";
while(<STDIN>)
{
    print $_;
    print $output $_;
}
close $output;

目录| perl tee.pl 或 目录| perl tee.pl Dir .bat

粗糙且未经检验。

如果你的windows环境路径中有cygwin,你可以使用:

 dir > a.txt | tail -f a.txt

dir 1 > a . txt 2 > &1 |式a . txt。

这将有助于重定向STDOUT和STDERR

有一个Win32端口的Unix tee命令,就是这样做的。见http://unxutils.sourceforge.net/或http://getgnuwin32.sourceforge.net/