如何使用Java执行Windows命令 – 更改networking设置

在Java中,我希望能够执行Windows命令。

有问题的命令是netsh 。 这将使我能够设置/重置我的IP地址。

请注意,我不想执行batch file。

我不想使用batch file,而是直接执行这些命令。 这可能吗?


这里是我实施的未来参考解决scheme:

 public class JavaRunCommand { private static final String CMD = "netsh int ip set address name = \"Local Area Connection\" source = static addr = 192.168.222.3 mask = 255.255.255.0"; public static void main(String args[]) { try { // Run "netsh" Windows command Process process = Runtime.getRuntime().exec(CMD); // Get input streams BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream())); BufferedReader stdError = new BufferedReader(new InputStreamReader(process.getErrorStream())); // Read command standard output String s; System.out.println("Standard output: "); while ((s = stdInput.readLine()) != null) { System.out.println(s); } // Read command errors System.out.println("Standard error: "); while ((s = stdError.readLine()) != null) { System.out.println(s); } } catch (Exception e) { e.printStackTrace(System.err); } } } 

 Runtime.getRuntime().exec("netsh"); 

请参阅运行时 Javadoc。

编辑:乙烯后来的答案表明,这个过程现在被弃用。 但是,根据DJViking的评论,这似乎不是这样的: Java 8文档 。 该方法不被弃用。

使用ProcessBuilder

 ProcessBuilder pb=new ProcessBuilder(command); pb.redirectErrorStream(true); Process process=pb.start(); BufferedReader inStreamReader = new BufferedReader( new InputStreamReader(process.getInputStream())); while(inStreamReader.readLine() != null){ //do something with commandline output. } 
 public static void main(String[] args) { String command="netstat"; try { Process process = Runtime.getRuntime().exec(command); System.out.println("the output stream is "+process.getOutputStream()); BufferedReader reader=new BufferedReader( new InputStreamReader(process.getInputStream())); String s; while ((s = reader.readLine()) != null){ System.out.println("The inout stream is " + s); } } catch (IOException e) { e.printStackTrace(); } } 

这工作。

Runtime#exec()

你可以使用Runtime.getRuntime().exec("tree"); 但是,这只会运行路径中找到的可执行文件,而不是像echodel ,等命令但​​只有像tree.comnetstat.com ,…要运行常规命令,你将不得不把cmd /c之前(eaxmple: Runtime.getRuntime().exec("cmd /c echo echo");