如何使用Java执行Windows命令 - 更改网络设置
在Java中,我希望能够执行Windows命令。如何使用Java执行Windows命令 - 更改网络设置
有问题的命令是netsh
。这将使我能够设置/重置我的IP地址。
请注意,我不想执行批处理文件。
而不是使用批处理文件,我想直接执行这些命令。这可能吗?
这里是我的未来参考实施的解决方案:
public class JavaRunCommand {
private static final String CMD =
"netsh int ip set address name = \"Local Area Connection\" source = static addr = 192.168.222.3 mask = 255.255.255.0";
public static void main(String args[]) {
try {
// Run "netsh" Windows command
Process process = Runtime.getRuntime().exec(CMD);
// Get input streams
BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(process.getErrorStream()));
// Read command standard output
String s;
System.out.println("Standard output: ");
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
// Read command errors
System.out.println("Standard error: ");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
}
Runtime.getRuntime().exec("netsh");
请参阅Runtime Javadoc。
编辑:后来由leet回答表明,这个过程现在已被弃用。但是,根据DJViking的评论,这似乎并非如此:Java 8 documentation。该方法不被弃用。
在我的环境中我不得不在命令前添加“cmd/c”,即'Runtime.getRuntime().exec(“cmd/c netsh”);' – Daniel
public static void main(String[] args) {
String command="netstat";
try {
Process process = Runtime.getRuntime().exec(command);
System.out.println("the output stream is "+process.getOutputStream());
BufferedReader reader=new BufferedReader(new InputStreamReader(process.getInputStream()));
String s;
while ((s = reader.readLine()) != null){
System.out.println("The inout stream is " + s);
}
} catch (IOException e) {
e.printStackTrace();
}
}
This works。
这会读取输出的每隔一行。 应该是: 'String s; ((s = reader.readLine())!= null){'是正确的('s = reader.readLine()!= null){ System.out.println(s); }' –
' 。 – SuB
使用ProcessBuilder
ProcessBuilder pb=new ProcessBuilder(command);
pb.redirectErrorStream(true);
Process process=pb.start();
BufferedReader inStreamReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
while(inStreamReader.readLine() != null){
//do something with commandline output.
}
您可以Runtime.getRuntime().exec("tree");
运行命令。但是,这只会运行在路径中找到的可执行文件,而不是像echo
,del
,del
,...但只有像tree.com
,netstat.com
,...这样的命令要运行常规命令,必须在命令之前放置cmd /c
(eaxmple:Runtime.getRuntime().exec("cmd /c echo echo");
这已经回答了很多次,只要看看计算器建议找一些他们的 – SJuan76
@ SJuan76,我道歉。你也许可以联系我的一些这些问题? – mre
@mre只要看看在侧边栏。 –