可以在Windows批处理或Java中编写Tee吗?

可以在Windows批处理或Java中编写Tee吗?,java,windows,batch-file,command-prompt,tee,Java,Windows,Batch File,Command Prompt,Tee,我有一个在Windows 7控制台中运行的Java程序: java -classpath classfolder mypackage.MyProgram 这个程序运行很长时间。它使用System.out.println将输出写入控制台 是否可以在不修改现有Java代码的情况下,将其输出实时定向到控制台和日志文件中 如果Windows7无法做到这一点,是否可以用Java编写一个Tee实用程序 它在Windows 8中解决了吗?有可能,只需从system.in读取并输出到system.out和一个

我有一个在Windows 7控制台中运行的Java程序:

java -classpath classfolder mypackage.MyProgram
这个程序运行很长时间。它使用System.out.println将输出写入控制台

是否可以在不修改现有Java代码的情况下,将其输出实时定向到控制台和日志文件中

如果Windows7无法做到这一点,是否可以用Java编写一个Tee实用程序


它在Windows 8中解决了吗?

有可能,只需从system.in读取并输出到system.out和一个文件。

要做到“不修改现有Java代码”,您可以编写另一个包装类,适当地重新分配
system.out
,然后调用现有的主类

package mypackage;
import java.io.*;
import org.apache.commons.io.output.*;

public class TeeWrapper {
  public static void main(String[] args) throws Exception {
    FileOutputStream logFile = new FileOutputStream("log.txt");
    try {
      System.setOut(new PrintStream(new TeeOutputStream(System.out, logFile)));
      MyProgram.main(args);
    } finally {
      logFile.close();
    }
  }
}
(使用ApacheCommons io)

运行包装器而不是原始类

java -classpath classfolder mypackage.TeeWrapper

tee
命令可以帮助您,但它是一个Unix命令。您可以用作
tee
的模拟

例如:

systeminfo | tee_nt.bat 1.txt

很有可能。。。在“logger”程序中,只需读取循环中的标准输入(例如,使用),然后执行您想要执行的操作:将其记录到您想要的任何位置。你所要做的就是将第一个程序的输出导入第二个程序:
java-classpath classfolder mypackage.MyProgram | java-classpath classfolder mylogger.mylogger程序
你可以在这里下载适用于Windows的
tee.exe
:@a_horse_,没有名字LOL。。。我没能谷歌:)