Java命令行输出

时间:2014-12-20 07:15:40

标签: java command-prompt

我使用以下代码在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运行,而是作为命令提示符的一部分编码,所以我无法得到输出。有没有办法做到这一点?谢谢

1 个答案:

答案 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 ;
    }
}