【问题标题】:How to run exec from Java for netsh?如何从 Java 为 netsh 运行 exec?
【发布时间】:2014-04-10 20:39:04
【问题描述】:

当我将其直接输入cmd.exe 时,以下工作正常:

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

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

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

如何改进代码?

【问题讨论】:

  • 阅读(并实施)所有 When Runtime.exec() won't 的建议。那可能会解决问题。如果不是,它应该提供更多关于失败原因的信息。然后忽略它引用exec 并使用ProcessBuilder 构建Process。还要将 String arg 拆分为 String[] args 以说明本身包含空格的参数。

标签: java runtime.exec


【解决方案1】:

首先尝试删除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 谢谢。但我得到相同的结果。默默无视。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多