首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows批处理脚本:将所有输出重定向到文件

Windows批处理脚本:将所有输出重定向到文件
EN

Stack Overflow用户
提问于 2013-03-12 03:24:53
回答 2查看 44.1K关注 0票数 43

我正在运行各种Java基准测试,并希望将结果存档。我像这样执行(dacapo)基准测试:

代码语言:javascript
复制
C:\VM\jre\bin\java  -jar C:\benchmarks\dacapo-9.12-bach.jar %arg1% > %time::=%

我通过一个参数传递基准类型,这就是%arg1%。

您可以看到,我正在将输出重定向到一个文本文件。不幸的是,输出的第一行和最后一行仍然在控制台中打印,而不是打印到文本文件中:

代码语言:javascript
复制
===== DaCapo 9.12 luindex starting =====
===== DaCapo 9.12 luindex PASSED in 2000 msec =====

尤其是在文本文件中包含最后一行非常重要:)

有没有什么技巧可以强迫这种行为呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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在注释中添加的那样。

票数 79
EN

Stack Overflow用户

发布于 2013-03-12 03:27:51

将2>&1添加到命令中:

代码语言:javascript
复制
 C:\VM\jre\bin\java  -jar C:\benchmarks\dacapo-9.12-bach.jar %arg1% 2>&1 > %time::=% 

这会将STDERR重定向到STDOUT,然后将其重定向到您的文本文件中。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15346863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档