下工作正常,当我直接键入到cmd.exe
:如何从Java为netsh运行exec?
netsh wlan connect name="Profile Name" ssid=XXXXXX
然而,当我尝试这样做从Java这是行不通的,它也不会引发任何异常。它被无声地忽略:
Runtime.getRuntime().exec("cmd netsh wlan connect name=\"Profile Name\" ssid=XXXXX ") ; `
我该如何改进代码?
下工作正常,当我直接键入到cmd.exe
:如何从Java为netsh运行exec?
netsh wlan connect name="Profile Name" ssid=XXXXXX
然而,当我尝试这样做从Java这是行不通的,它也不会引发任何异常。它被无声地忽略:
Runtime.getRuntime().exec("cmd netsh wlan connect name=\"Profile Name\" ssid=XXXXX ") ; `
我该如何改进代码?
首先尝试删除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);
}
+1谢谢。但是我得到了同样的结果。默默地忽略。 –
我已经更新了我的答案。我已经测试过它,它适用于我。 – xav
阅读(实施)*所有*的建议[当的Runtime.exec()不会(HTTP: //www.javaworld.com/jw-12-2000/jw-1229-traps.html)。这可能会解决问题。如果不是,它应该提供更多关于失败原因的信息。然后忽略它引用'exec'并使用'ProcessBuilder'构建'Process'。还要将'String arg'分解为'String [] args'来解释其本身包含空格的参数。 –