可以在Windows批处理或Java中编写Tee吗?
我有一个在Windows 7控制台中运行的Java程序:可以在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和一个
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。。。我没能谷歌:)