我正在尝试用Java执行netsh命令。我想获得可用的网络。我可以在cmd:上运行此代码
"netsh wlan show network mode=Bssid > D:\output.txt"
它有效。当我尝试在Java中运行此代码时,它不起作用。
Process networks= Runtime.getRuntime().exec("netsh wlan show network mode=Bssid > D:\output.txt");
修复程序如何做到这一点?
有一个exec重载,您可以将参数作为String数组传递。
实际上netsh.exe无法处理此问题。
解决方案是在命令行解释器(如)中执行netsh
Runtime.getRuntime().exec(new String[] {"cmd.exe", "/Cnetsh wlan show network mode=Bssid > D:\output.txt"});
无论如何,命令行解释器是处理输出过滤器´>´
否则,您可能会省略对文件的写入,并立即以字符串列表的形式访问输出
BufferedReader input = new BufferedReader(new InputStreamReader(networks.getInputStream()));
List<String> res = new ArrayList<String>();
String line;
try
{
while ((line = input.readLine()) != null)
{
res.add(line);
}
}
catch (Exception x)
{
x.printStackTrace();
}
无论如何,您都要这样做,以便与被调用的进程同步。