首页 > 代码库 > java代码调用exe(cmd命令)
java代码调用exe(cmd命令)
public class ShellCommand
{
public static void execCmd(String cmd, boolean wait)
{
execCmd(cmd, wait, null);
}
public static void execCmd(String cmd, boolean wait, StringBuilder output)
{
String[] cmds = new String[] { cmd };
execCmds(cmds, null, null, wait, output);
}
public static void execCmds(String[] cmd, String dir, boolean wait,
StringBuilder output)
{
execCmds(cmd, null, dir, wait, output);
}
public static void execCmds(String[] cmds, String[] env, String dir,
boolean wait, StringBuilder output)
{
Process process = null;
try {
File dirFile = null;
if (dir != null) {
dirFile = new File(dir);
}
for (String cmd : cmds) {
System.out.println(cmd);
}
if (cmds.length == 1) {
process = Runtime.getRuntime().exec(cmds[0], env, dirFile);
} else {
process = Runtime.getRuntime().exec(cmds, env, dirFile);
}
// logProcessOutput(process, cmds[0], output);
} catch (Exception e) {
String message = "executeCmd: " + cmds + " error: " + e.toString();
if (output != null) {
output.append(message);
}
}
if (process != null) {
if (wait) {
try {
process.waitFor();
process.getOutputStream().close();
process.getErrorStream().close();
process.getInputStream().close();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static Process runProcess(String[] cmds, boolean root, String[] env,
String dir, boolean wait, StringBuilder output)
{
Process process = null;
try {
File dirFile = null;
if (dir != null) {
dirFile = new File(dir);
}
for (String cmd : cmds) {
System.out.println(cmd);
}
if (root) {
process = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(
process.getOutputStream());
for (String cmd : cmds) {
os.writeBytes(cmd + "\n");
}
os.flush();
// os.writeBytes("exit\n");
os.close();
} else {
if (cmds.length == 1) {
process = Runtime.getRuntime().exec(cmds[0], env, dirFile);
} else {
process = Runtime.getRuntime().exec(cmds, env, dirFile);
}
}
} catch (Exception e) {
String message = "executeCmd: " + cmds + " error: " + e.toString();
if (output != null) {
output.append(message);
}
}
if (process != null) {
if (wait) {
try {
process.waitFor();
process.getOutputStream().close();
process.getErrorStream().close();
process.getInputStream().close();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return process;
}
}
java代码调用exe(cmd命令)