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

标签 java vbscript cmd command

我试图停止使用 Runtime.getRuntime().exec("") 方法从 java 应用程序启动的 wscript。我使用 wscript 启动了 mysql 服务器。但是当我关闭 java 应用程序时,wscript 没有关闭,因此,每当 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

已编辑

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

最佳答案

由于您有一个有效的 Process 实例,因此您应该能够调用 process.destroy();

Solution used came from duplicate question listed below;

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


START

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

STOP

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

关于java - 如何从java停止wscript.exe以停止mysql服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37541256/

相关文章:

java - 我如何告诉 Dozer 使用编程 api 绕过每个字段的映射 null 或空字符串值?

java - Spring库中的REST(RestTemplate)是否支持HTTPS协议(protocol)?

windows 命令行 多个命令

batch-file - 使用文件中第一个文本行的一部分重命名 txt 文件

c - 如何在Windows上安装Xlib(eclipse、c语言)

java - 我们应该将insertRow() 与acceptChanges() 一起使用吗?

java - servlet 的线程安全问题

windows - 合并大量文件,仅包括部分文件名

batch-file - 使用批处理文件创建 VBScript

vbscript - 使用 VBScript Err 对象检查错误