mre*_*mre 42 java windows runtime.exec
在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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
bad*_*oit 37
Runtime.getRuntime().exec("netsh");
Run Code Online (Sandbox Code Playgroud)
请参阅运行时 Javadoc.
编辑:leet稍后的回答表明此过程现已弃用.但是,根据DJViking的评论,似乎并非如此:Java 8文档.该方法不推荐使用.
lee*_*eet 28
使用 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.
}
Run Code Online (Sandbox Code Playgroud)
您可以使用Runtime.getRuntime().exec("<command>")(例如Runtime.getRuntime().exec("tree"))运行命令。但是,这将只运行可执行文件路径发现,没有命令,如echo,del...但只有这样的东西tree.com,netstat.com...要运行常规命令,你将不得不把cmd /c命令之前(如Runtime.getRuntime().exec("cmd /c echo echo"))
| 归档时间: |
|
| 查看次数: |
90146 次 |
| 最近记录: |