public class ReStartExeUtil {
public static boolean reStart(String filepath, String pidName, int waitingTime) {
BufferedReader reader = null;
try {
Runtime runtime = Runtime.getRuntime();
Process pro = runtime.exec(“cmd.exe /c tasklist |find “” + pidName + “.exe””);
reader = new BufferedReader(new InputStreamReader(pro.getInputStream()));
String str = reader.readLine();
if (str != null) {
System.out.println(pidName + “.exe正在运行,准备重启。。。”);
runtime.exec("taskkill /F /IM " + pidName + “.exe”);// 停止应用
System.out.println(“等待” + waitingTime + “后启动” + pidName + “.exe”);
Thread.sleep(waitingTime * 1000);
System.out.println(“启动” + pidName + “.exe 。。。”);
runtime.exec("cmd /c start " + filepath + “/” + pidName + “.exe”);// 启动应用
pro = runtime.exec(“cmd.exe /c tasklist |find “” + pidName + “.exe””);
reader = new BufferedReader(new InputStreamReader(pro.getInputStream()));
str = reader.readLine();
if (str != null) {
System.out.println(“启动” + pidName + “.exe 成功”);
return true;
} else {
return false;
}
} else {
System.out.println(pidName + “.exe 未运行启动” + pidName + “.exe 。。。”);
runtime.exec("cmd /c start " + filepath + "/" + pidName + ".exe");// 启动应用
pro = runtime.exec("cmd.exe /c tasklist |find \"" + pidName + ".exe\"");
reader = new BufferedReader(new InputStreamReader(pro.getInputStream()));
str = reader.readLine();
if (str != null) {
System.out.println("启动" + pidName + ".exe 成功");
return true;
} else {
return false;
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (reader != null)
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return false;
}
public static void main(String[] args) throws Exception {
System.out.println(reStart("C:\\makeInstall\\byd-test-manage-32\\byd-test-manage-32", "log_upload", 3));
}
}