我需要检查是否从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%未运行或不存在。