【问题标题】:How to stop wscript.exe from java to stop a mysql server? [duplicate]如何从 java 中停止 wscript.exe 以停止 mysql 服务器? [复制]
【发布时间】:2016-09-29 04:53:33
【问题描述】:

我正在尝试使用 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);
        }
    }

已编辑

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

【问题讨论】:

    标签: java vbscript cmd command


    【解决方案1】:

    由于您有一个有效的 Process 实例,您应该可以调用 process.destroy();

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

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


    开始

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

    停止

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

    【讨论】:

    • 当我启动mysql_start.vbs时,一个cmd窗口也启动了。请问destroy可以关闭cmd窗口吗?
    • 由于 CMD 窗口只是您的进程的图形表示,它应该在进程终止后关闭。但是您必须尝试一下。
    • 好的,让我试试,如果它有效,我会接受这个答案并投票:)
    • 我已经尝试过了,但是 wscript.exe 没有关闭,控制台窗口主机和 Windows 命令处理器也没有关闭,它只是继续在内存中积累。我添加了一个屏幕截图以使其清晰。
    • @ShershaFn 不,您所做的只是从现有答案中复制而没有注明出处 - stackoverflow.com/a/9991357/692942,如果其他答案有帮助,请投赞成票并继续前进。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 2014-01-13
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多