2

我有一个 Java 程序,它从用户那里获取输入并根据输入显示输出。该程序为用户提供了一个选项菜单,用户需要从菜单中选择一个选项。

现在我必须通过一个批处理文件运行这个程序,并将这个程序的输出流式传输到另一个文件中。我通过在 bat 文件中使用以下代码来实现这一点。

java -jar ./dist/MP4.jar > ./docs/mp4out.txt

但是当这个 bat 文件运行时,命令提示符将永远不会显示菜单并询问用户输入,因为所有 java 程序输出都被重定向到文件中。所以我的问题是如何使命令提示符显示菜单并等待用户输入并将所有程序输出重定向到文件中?

4

3 回答 3

1

而不是System.out.println()使用System.err.println()用于菜单输出。那么您的重定向将仅捕获发送到 System.out (STDOUT) 的内容,而不是发送到 System.err。

注意:上面有点hack,为什么不改变你的代码写入输出文件而不是需要重定向呢?如果需要,您可以将其设为可选并写入标准输出。

这与您想要的相反:将 Windows cmd stdout 和 stderr 重定向到单个文件

于 2013-04-28T01:27:50.657 回答
0

Tee 过滤器是同时重定向到文件和屏幕的传统方法。

于 2013-04-28T02:50:53.547 回答
0

如果我对您的理解正确,您所要做的就是允许用户在 while 循环中输入一些内容,例如

    while(userInput != optionThatEndsMenu) { askInput....}

然后,只需使用 PrintWriter 创建一个新文件,例如

    PrintWriter outputFile = new PrintWriter(<fileName>);
    outputFile.println(//whatever you have to output goes here);

并且应该将程序的内容打印到文件中。

于 2013-04-28T02:04:10.940 回答