从命令提示符显示java程序的输出并将其复制到文件中



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

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

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

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

不使用System.out.println(),使用System.err.println()作为菜单输出。那么您的重定向将只捕获发送到系统的内容。输出(STDOUT)和不想要的转到System.err.

注意:上面是一个hack,为什么不改变你的代码写到输出文件,而不是要求重定向?您可以将其设置为可选的,并在需要时写入标准输出。

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

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

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

然后,使用printwwriter创建一个新文件,如

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

,然后将程序的内容打印到文件中

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

最新更新