http://sealbird.iteye.com/blog/1202196
Java代码
Process process = Runtime.getRuntime().exec(cmd);
process.waitFor();
Process process = Runtime.getRuntime().exec(cmd);
process.waitFor(); 但是当遇到像cd这样的命令时,上面的这种写法切不管用,很多时候我们以为是命令输错了或是文件找不到。
现在提供一种新的执行命令方法:
public static void exeCmd(String cmd) {
File wd = new File("/bin");System.out.println(wd);
Process proc = null;
try {
proc = Runtime.getRuntime().exec("/bin/bash", null, wd);
} catch (IOException e) {
e.printStackTrace();
}
if (proc != null) {
BufferedReader in = new BufferedReader(new InputStreamReader(proc
.getInputStream()));
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(proc.getOutputStream())), true);
out.println(cmd);
try {
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
proc.waitFor();
in.close();
out.close();
proc.destroy();
} catch (Exception e) {
e.printStackTrace();
}
}
}
这种写法相当于把整个bash环境拿进来了,out.println只要输入你需要执行的命令就行。
看上去很复杂,其实很实用,只要能在命令行执行的命令,都可以拿来试试