我使用以下代码在java中执行命令并获取输出:
String line;
try {
System.out.println(command);
Process p = Runtime.getRuntime().exec(command);
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
print(line);
}
input.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
然而,显然命令树'和' assoc'和其他人实际上并不是他们自己的程序可以通过Java运行,而是作为命令提示符的一部分编码,所以我无法得到输出。有没有办法做到这一点?谢谢
答案 0 :(得分:2)
我没有Windows机器来测试它,但通常是为了获得那些运行cmd.exe
的内置程序的输出作为程序并将命令作为参数传递给它。
现在,这有一些限制,因为当命令完成后,可执行文件会停止。因此,如果您执行cd
命令,它将起作用,但它只影响子进程,而不影响您的进程。对于那些类型的东西,如果你想让它们改变你的过程状态,你需要使用其他设施。
此版本适用于Mac:
import java.io.*;
public class cmd {
public static void
main(String[] argv){
String line;
String[] cmd = {"bash","-c","ls"};
System.out.println("Hello, world!\n");
try {
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader input =
new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
} catch (Exception e) {
}
return ;
}
}