Windows 批处理脚本 : Redirect ALL output to a file

标签 windows batch-file dacapo

我正在运行各种 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 =====

特别是文本文件中的最后一行很重要:)

是否有强制执行此行为的技巧?

最佳答案

您必须重定向 STDOUTSTDERR

命令 > 日志文件 2>&1

STDIN 是文件描述符 #0,STDOUT 是文件描述符 #1,STDERR 是文件描述符 #2。
正如“command > file”将 STDOUT 重定向到一个文件一样,您也可以将任意文件描述符相互重定向。 >& 运算符在文件描述符之间重定向。因此,2 >& 1 将所有 STDERR 输出重定向到 STDOUT

此外,注意在指令末尾添加 2>&1,因为在 Windows 上,重定向的顺序很重要,因为 command 2>&1 > logfile 将正如 Dawid 在评论中添加的那样,生成一个空文件。

关于Windows 批处理脚本 : Redirect ALL output to a file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15346863/

相关文章:

windows - 在 Windows 7 cmd 上运行 Scons 2.2.0

使用 send-mailmessage 命令时的电子邮件凭据

java - 预热 JVM 以运行 Scalabench

python - 使用 .bat 文件启动带有 venv 的 flask

shell - 如何等到 VirtualBox 完成加载以在 Windows Batch 中执行下一个命令?

从 Linux 终端加载 Java 类

Windows CMD - 代码语句作为数组变量的值不适用于 IF 命令

android - FaceDetection 的 OpenCV 示例不运行

windows - 如何在 Go 中获取 Windows 进程的句柄?