如何从Java运行exec for netsh?

时间:2014-04-10 20:39:04

标签: java runtime.exec

当我直接在cmd.exe中输入以下内容时,以下工作正常:

netsh wlan connect name="Profile Name" ssid=XXXXXX

但是,当我尝试从java执行此操作时,它不起作用,也不会抛出任何异常。它被默默地忽略了:

Runtime.getRuntime().exec("cmd netsh wlan connect name=\"Profile Name\" ssid=XXXXX ") ; ` 

我如何改进代码?

1 个答案:

答案 0 :(得分:3)

首先尝试删除cmd参数(您不需要运行此解释器,只需netsh)。

否则可能是由于此命令行中的空格字符(例如,请注意SSID中的空格)。您可能需要尝试Runtime.exec(String[] cmdarray) java.lang.ProcessBuilder来分别指定每个参数。

示例:

Runtime.getRuntime().exec(new String[] {"netsh", "wlan", "connect", "name=\"Profile Name\"", "ssid=XXXXX"});

或(完整示例):

ProcessBuilder pb = new ProcessBuilder("netsh", "wlan", "connect",
    "name=\"Profile Name\"", "ssid=XXXXX");
pb.redirectErrorStream(true);
Process process = pb.start();
BufferedReader reader = new BufferedReader(
    new InputStreamReader(process.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
    System.out.println(line);
}