我正在运行各种Java基准测试,并希望将结果存档。我像这样执行(dacapo)基准测试:
C:\VM\jre\bin\java -jar C:\benchmarks\dacapo-9.12-bach.jar %arg1% > %time::=%我通过一个参数传递基准类型,这就是%arg1%。
您可以看到,我正在将输出重定向到一个文本文件。不幸的是,输出的第一行和最后一行仍然在控制台中打印,而不是打印到文本文件中:
===== DaCapo 9.12 luindex starting =====
===== DaCapo 9.12 luindex PASSED in 2000 msec =====尤其是在文本文件中包含最后一行非常重要:)
有没有什么技巧可以强迫这种行为呢?
发布于 2013-03-12 03:27:59
必须重定向STDOUT和STDERR。
command > logfile 2>&1
STDIN是文件描述符#0,STDOUT是文件描述符#1,STDERR是文件描述符#2。
正如"command > file“将STDOUT重定向到文件一样,您也可以将任意文件描述符重定向到彼此。>&操作符在文件描述符间进行重定向。因此,2 >& 1将所有STDERR输出重定向到STDOUT。
此外,要注意在指令的末尾添加2>&1,因为在Windows上,重定向的顺序很重要,因为command 2>&1 > logfile将生成一个空文件,就像Dawid在注释中添加的那样。
发布于 2013-03-12 03:27:51
将2>&1添加到命令中:
C:\VM\jre\bin\java -jar C:\benchmarks\dacapo-9.12-bach.jar %arg1% 2>&1 > %time::=% 这会将STDERR重定向到STDOUT,然后将其重定向到您的文本文件中。
https://stackoverflow.com/questions/15346863
复制相似问题