java - 如何用java读取command.com的输出

标签 java process output

我正在尝试从 command.com 读取输出,而不是 cmd.exe,因此我尝试使用以下代码:

    Process p=Runtime.getRuntime().exec("command /c echo goodbye world"); //command.com doesn't work eiher
    p.waitFor(); 
    BufferedReader reader=new BufferedReader(
        new InputStreamReader(p.getInputStream())
        ); 
    String line=""; 
    String output="";
    while((line = reader.readLine()) != null) 
        { 
        output+=line;
        }
    System.out.print(line);

不幸的是,它没有打印任何内容,但是当我用 cmd 完美替换 command 时它就可以工作。 我试过在cmd中运行'command/c echo goodbye world',它有效。 我在 Windows Me 和 XP 中尝试过此代码,因为新的 Windows 版本中不存在 command.com。

最佳答案

您可以尝试修改 command 命令以将其输出发送到文件,然后在 p.waitFor() 完成后,您可以从该文件读取输入。

Process p=Runtime.getRuntime().exec("command/C echo goodbye world > output.txt");

这是一个猜测,但也许 command.com 解释器在/C 开关上区分大小写。也许可以尝试使用大写 C 来代替,看看会发生什么。您还可以使用 ProcessBuilder 而不是 Process,因为它可以让您将命令的 stderr 重定向到 stdout,以便您可以从输入流中收集它们。

关于java - 如何用java读取command.com的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40338198/

相关文章:

java - 使用自定义字体 [java.io.IOException : Error reading font data.]

java - 当新的多线程消费者添加到组中时是否会发生重新平衡

java - 如何检查可执行 JAR 是否已在另一个 JVM 中完成

java - 如何从 Java 作为单独的进程运行 groovy?

java - ProcessBuilder 重定向输出

javascript - Angular 2 @Input - 如何从父组件绑定(bind)子组件的 ID 属性?

c++ - 一个奇怪的 C++ 错误,可能是相对于 long long 类型

java - @Async 和 @Transactional 的 Spring 启动问题

Oracle RAW 的 java 数据类型

Python 在终止后捕获子进程输出