2

我需要检查mysqld服务是否正在运行。但是,服务的名称可能会因安装它的计算机而异。例如,在一台计算机上,它可能被命名为MySQL56. 所以我net start mysql56改用。

如何提前获取服务名称?

我尝试了类似C:\>"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.6\my.ini"在 cmd 中的方法,在这里我可以更改安装期间或首次启动时定义的用户路径,它将启动该服务。

但是,如果我执行该操作,则 cmd 窗口将保持打开状态,等待服务停止。这意味着用户必须手动关闭窗口。有没有办法执行上面的行并让 cmd 窗口自动关闭?

4

1 回答 1

3

我不太清楚你想要达到什么目的。您想找出已安装的 MySQL 服务的名称吗?您可以wmic为此使用:

wmic service where "PathName LIKE '%mysqld%'" get DisplayName /value | findstr /i "displayname"
if %errorlevel% equ 0 (
  echo MySQL service installed.
) else (
  echo MySQL service not installed.
)

或者您想在mysqld不安装服务的情况下启动?您可以使用该--standalone选项执行此操作。

set SERVER=%ProgramFiles%\MySQL\MySQL Server 5.6\bin\mysqld
set CONFIG=%ProgramData%\MySQL\MySQL Server 5.6\my.ini
"%SERVER%" --defaults-file="%CONFIG%" --standalone

但是,该进程总是阻塞控制台,因此如果您希望脚本mysqld在后台运行时执行其他操作,您需要在另一个cmd实例中启动它:

set SERVER=%ProgramFiles%\MySQL\MySQL Server 5.6\bin\mysqld
set CONFIG=%ProgramData%\MySQL\MySQL Server 5.6\my.ini
start "" "%COMSPEC%" /c "%SERVER%" --defaults-file="%CONFIG%" --standalone

添加/b抑制第二个命令提示符窗口的选项:

start "" /b "%COMSPEC%" /c "%SERVER%" --defaults-file="%CONFIG%" --standalone
于 2013-03-12T18:08:31.247 回答