代码之家  ›  专栏  ›  技术社区  ›  kerkeslager

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

  •  17
  • kerkeslager  · 技术社区  · 14 年前

    我需要检查是否从批处理文件安装了Windows服务。如果需要的话,我可以蘸其他东西,但我不喜欢。有什么办法吗?

    5 回复  |  直到 6 年前
        1
  •  51
  •   erlando    14 年前

    试试这个:

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

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

        2
  •  10
  •   M Sasan MH    11 年前

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

    @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.
    
        3
  •  3
  •   Ahmed Ashour chim    6 年前

    如何:

    sc interrogate "nameofyourservicehere"
    

    从那以后我觉得这个很有用 tasklist 不会提供有关服务是否已安装的信息。(或者我不知道怎么做)

        4
  •  0
  •   Ahmed Ashour chim    6 年前

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

    sc query | find /I "%tmpServiceName%" > nul
    if not errorlevel 1 echo. && net stop %tmpServiceName%
    if errorlevel 1 echo.   - Windows service %tmpServiceName% is not running or doesn't exist.
    
        5
  •  -9
  •   Chris Kooken    14 年前

    如果“net stop[service name]”失败并显示“service name is invalid”服务未安装,则可以运行“net stop[service name]”。

    推荐文章