如何从java停止wscript.exe来停止mysql服务器?

时间:2016-05-31 09:01:26

标签: java vbscript cmd command

我试图阻止使用Runtime.getRuntime()。exec("")方法从java应用程序启动的wscript。我使用wscript启动了一个mysql服务器。但是当wscript没有关闭时我关闭我的java应用程序,因为当我每次重新启动应用程序80%的内存充满了wscript.exe使我的电脑变慢。 所以我的问题是如何在使用结束后安全地关闭wscript.exe。如果有人问这个问题,请指出我正确的方向

 public void startMySQLServer() {
        try {
            Process process = Runtime.getRuntime().exec("wscript C:\\\\\\\\Users\\\\\\\\Shersha\\\\\\\\Documents\\\\\\\\NetBeansProjects\\\\\\\\Berries\\\\\\\\batch\\\\\\\\mysql_start.vbs");
            System.out.println("waiting to start mysql server");
            process.waitFor();
            System.out.println("mysql server started sucessfully");

        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (IOException ex) {
            Logger.getLogger(DataBaseManager.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

enter image description here enter image description here

EDITED

public void stopMySQLServer() {
        try {
            Process process = Runtime.getRuntime().exec("wscript C:\\\\\\\\Users\\\\\\\\Shersha\\\\\\\\Documents\\\\\\\\NetBeansProjects\\\\\\\\Berries\\\\\\\\batch\\\\\\\\mysql_stop.vbs");
            System.out.println("waiting to stop mysql server");
            process.waitFor();
            process.destroy();
            System.out.println("process exit value" + process.exitValue());
            System.out.println("mysql server stopped sucessfully");

        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (IOException ex) {
            Logger.getLogger(DataBaseManager.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

编辑2 mysql_start.vbs

Set WshShell = WScript.CreateObject("WScript.Shell")
  If WScript.Arguments.length = 0 Then
  Set ObjShell = CreateObject("Shell.Application")
  ObjShell.ShellExecute "wscript.exe", """" & _
  WScript.ScriptFullName & """" &_
  " RunAsAdministrator", , "runas", 1
  Wscript.Quit
  End if
CreateObject("Wscript.Shell").Run "C:\Users\Shersha\Documents\NetBeansProjects\Berries\batch\mysql_start.bat",0,True

1 个答案:

答案 0 :(得分:2)

由于您拥有有效的Process实例,因此您应该可以致电process.destroy();

  

使用的解决方案来自下面列出的重复问题;

     

@shashankaholic Answer to Start or stop mysql database using java programming

           

开始

Process process = Runtime.getRuntime().exec("net START MySQL");
     

<强> STOP

Process process = Runtime.getRuntime().exec("net STOP MySQL");