如何在Java中执行Windows命令?

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

Solutions Collecting From Web of "如何在Java中执行Windows命令?"

我希望这有帮助 :)

你可以使用:

 Runtime.getRuntime().exec("ENTER COMMAND HERE"); 

一个例子。 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) { } 

利用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(); } } } } 

我通常会建立一个全功能的类,你可以通过“命令”(比如“dir”)传递它的参数,这个参数会把调用自动添加到操作系统中。 我还将包括获得输出的能力,可能通过监听器回调接口,甚至输入,如果命令允许输入…

老问题,但可能会帮助路过的人。 这是一个简单而有效的解决方案。 上面的一些解决方案不起作用。

 import java.io.IOException; import java.io.InputStream; public class ExecuteDOSCommand { public static void main(String[] args) { final String dosCommand = "cmd /c dir /s"; final String location = "C:\\WINDOWS\\system32"; try { final Process process = Runtime.getRuntime().exec(dosCommand + " " + location); final InputStream in = process.getInputStream(); int ch; while((ch = in.read()) != -1) { System.out.print((char)ch); } } catch (IOException e) { e.printStackTrace(); } } } 

资料来源: http : //www.devx.com/tips/Tip/42644

这是一个示例代码,用于在控制台窗口中运行并输出ipconfig命令的输出。

 import java.io.IOException; import java.io.InputStream; public class ExecuteDOSCommand { public static void main(String[] args) { final String dosCommand = "ipconfig"; try { final Process process = Runtime.getRuntime().exec(dosCommand ); final InputStream in = process.getInputStream(); int ch; while((ch = in.read()) != -1) { System.out.print((char)ch); } } catch (IOException e) { e.printStackTrace(); } } } 

资料来源: https : //www.codepuran.com/java/execute-dos-command-java/