Java命令行输出

Java命令行输出,java,command-prompt,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()));

我使用以下代码在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();
        }

然而,显然命令“tree”和“assoc”以及其他命令实际上并不是它们自己的程序,它们可以通过Java运行,而是作为命令提示符的一部分进行编码,因此我无法获得输出。实际上有什么方法可以做到这一点吗?谢谢你

我没有一台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 ;
    }
}

您使用另一个
线程来读取它。我想我不明白,问题是我无法从“assoc”或类似命令获取输出。假设您参考Windows,请将
assoc
的输出重定向到输出文件中,然后读取该文件。发布问题时,请确保提供所有必要的详细信息:
命令的内容示例、实际输出、请求的输出、操作系统等。