如何在Java中执行Windows命令?

use*_*493 4 java windows cmd

我正在研究一个项目,它会给你一个Windows命令列表.当您选择一个时,它将执行该命令.但是,我不知道该怎么做.我打算用Visual C#或C++来做,但C++类太复杂了,我不想在Visual C#中制作表单和垃圾(在控制台应用程序中真的很糟糕).

Bev*_*qua 5

我希望这有帮助 :)

您可以使用:

Runtime.getRuntime().exec("ENTER COMMAND HERE");
Run Code Online (Sandbox Code Playgroud)


小智 5

一个例子.1.创建cmd 2.写入cmd - >调用命令.

try {
    // Execute command
    String command = "cmd /c start cmd.exe";
    Process child = Runtime.getRuntime().exec(command);

    // Get output stream to write from it
    OutputStream out = child.getOutputStream();

    out.write("cd C:/ /r/n".getBytes());
    out.flush();
    out.write("dir /r/n".getBytes());
    out.close();
} catch (IOException e) {
}
Run Code Online (Sandbox Code Playgroud)


Mad*_*mer 5

利用这个ProcessBuilder.

它使构建过程参数变得更容易,并且可以自动处理命令中的空格...

public class TestProcessBuilder {

    public static void main(String[] args) {

        try {
            ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "dir");
            pb.redirectError();
            Process p = pb.start();
            InputStreamConsumer isc = new InputStreamConsumer(p.getInputStream());
            isc.start();
            int exitCode = p.waitFor();

            isc.join();
            System.out.println("Process terminated with " + exitCode);
        } catch (IOException | InterruptedException exp) {
            exp.printStackTrace();
        }

    }

    public static class InputStreamConsumer extends Thread {

        private InputStream is;

        public InputStreamConsumer(InputStream is) {
            this.is = is;
        }

        @Override
        public void run() {

            try {
                int value = -1;
                while ((value = is.read()) != -1) {
                    System.out.print((char)value);
                }
            } catch (IOException exp) {
                exp.printStackTrace();
            }

        }

    }
}
Run Code Online (Sandbox Code Playgroud)

我通常会构建一个通用类,您可以通过"命令"(例如"dir")及其参数传递,它会自动将调用附加到操作系统.如果命令允许输入,我还可以包括获取输出的能力,可能通过监听器回调接口甚至输入...