如果使用批处理文件未安装服务,如何检入Windows

时间:2012-02-25 15:16:09

标签: service batch-file

我正在尝试执行批处理程序,需要在检查服务是否正在运行/停止之前检查服务是否已安装。

我想询问当操作系统是Windows XP时,是否有任何方法可以检查已卸载服务的ERRORLEVEL。

在我的代码段中:

ver | find /I "XP"
if %errorlevel%==0 goto ver_xp
goto ver_nonXP

:ver_xp
echo Windows XP
sc query myService > nul
echo %errorlevel%
if errorlevel ___I goto ServiceOk
if errorlevel ___ goto ServiceError
goto ServiceError

:ver_nonXP
echo Windows is not XP
sc query myService > nul
echo error1_percent %errorlevel%
if %errorlevel%==0 goto ServiceOk
if %errorlevel% NEQ '0' goto ServiceError
goto end

:ServiceError
echo Service is not installed
net helpmsg %errorlevel%
goto end

:ServiceError
rem do some operations here....

我尝试使用

if errorlevel 1060 goto ServiceError

似乎如果未安装该服务,则上述条件将始终为false。

我做了错误级别____,因为我不知道应该是正确的条件。

2 个答案:

答案 0 :(得分:5)

sc query myService |find "myService" >nul会做到这一点

答案 1 :(得分:2)

根据这个答案,这可以批量使用您描述的方法How does one find out if a Windows service is installed using (preferably) only batch?

或者您可以使用powershell进行查询:

$serv_status = get-service "myService"
if($serv_status -ne $null) 
{ 
    // do some operations here
}