我正在尝试从 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/