下工作正常,當我直接鍵入到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'來解釋其本身包含空格的參數。 –