bat判断window服务是否存在


今天再用bat命名判断window服务时,被坑了。我百度查的他们都说是这样检查的:

@echo off
REM 将引号内部分改成你要查找的服务名称
sc query |find /i "MongoDB" >nul 2>nul
REM 如果服务存在,跳转至exist标签
if not errorlevel 1 (goto exist) else goto notexist

:exist
REM 这里写服务存在时用的代码
echo exist MongoDB server
goto :end

:notexist
REM 这里写服务不存在时用的代码
echo not exist MongoDB server

goto :end

:end
pause

但是我写完以后怎么执行都不对,只有当我把服务启动的时候才能检查到存在。也就是说这个判断根本不是检查是否存在服务,而是判断是否启动服务了。坑爹的百度,在百度上查到的关于这个指令的写法都是这样的写法。大家都在相互抄袭,但且不去尝试是否正确也不指正。


其实正真的检查window服务是否存在的写法应该是:

@echo off
SC QUERY mysql56 > NUL
IF ERRORLEVEL 1060 GOTO NOTEXIST
GOTO EXIST

:NOTEXIST
ECHO not exist mysql56 service
GOTO END

:EXIST
ECHO exist mysql56 service
GOTO END

:END
pause

这才是正确的。而且本人亲测了。

猜你喜欢

转载自blog.csdn.net/woaixinxin123/article/details/51289854