如何确定Windows服务是否使用(最好)仅批量安装?

我需要检查是否从batch file安装Windows服务。 如果需要的话,我可以深入其他方面,但是我不想。 有没有办法做到这一点?

你可以运行“净停止[servicename]”如果它失败,“服务名称是无效的”服务没有安装

尝试这个:

@echo off SC QUERY ftpsvc > NUL IF ERRORLEVEL 1060 GOTO MISSING ECHO EXISTS GOTO END :MISSING ECHO SERVICE MISSING :END 

请注意, SC QUERY命令通过短服务名称查询不是显示名称。 您可以通过查看服务管理器中服务属性的常规选项卡来查找该名称。

你应该使用“查询”,而不是“停止”或其他命令,“停止”可以停止你的服务,如果它存在,那么这是不正确的。

 @echo OFF set _ServiceName=SomeServiceName sc query %_ServiceName% | find "does not exist" >nul if %ERRORLEVEL% EQU 0 echo Service Does Not Exist. if %ERRORLEVEL% EQU 1 echo Service Exist. 

关于什么:

  sc interrogate "nameofyourservicehere" 

我发现这是非常有用的,因为tasklist不会提供服务是否安装的信息。 (或者我没有找到如何)

以下是一个使用sc query来验证是否安装了Windows服务的示例,如果找到则停止。

   sc查询| 找到/我“%tmpServiceName%”> nul
    如果不是errorlevel 1 echo。  && net stop%tmpServiceName%
    如果errorlevel 1回显。  -  Windows服务%tmpServiceName%未运行或不存在。