2011-05-09 101 views
5

我想知道如何检查服务是否正在使用批处理文件运行批处理文件检查系统服务是否正在运行

例如,

如果XXXX服务正在运行 去启动stage2.bat 别人去附和服务没有运行

任何帮助,将不胜感激

感谢

+0

我已经找到了解决办法,任何人否则有这个问题: – James 2011-05-09 18:12:02

+0

回显关闭 sc查询PeerDistSvc 如果%errorlevel%== 1060回声无法启动服务。 如果%errorlevel%== 0 echo服务已成功启动。 回声Errorlevel:%errorlevel% – James 2011-05-09 18:12:30

回答

12

类似How to check if a process is running via a batch script

编辑:
从帖子中,添加了else语句:

tasklist /FI "IMAGENAME eq myapp.exe" 2>NUL | find /I /N "myapp.exe">NUL 
if "%ERRORLEVEL%"=="0" (
    call stage2.bat 
) else (
    echo Program is not running 
) 

对于服务:

sc query "ServiceName" | find "RUNNING" 
if "%ERRORLEVEL%"=="0" (
    call stage2.bat 
) else (
    echo Program is not running 
) 
+0

嗨它是,但它不包括任何其他语句:( – James 2011-05-09 17:54:29

+0

@詹姆斯,检查我的编辑 – 2011-05-09 18:00:28

+0

嗨,谢谢,虽然你如何做到这一点与服务虽然,对一个过程 – James 2011-05-09 18:03:50

3

阅读这篇文章http://support.microsoft.com/kb/251192看到SC /?

然后尝试

SC QUERY

编辑: 自动检查,PI PE结果发现和寻找RUNNING

SC QUERY %1 | FIND "STATE" | FIND "RUNNING" >nul 
IF ERRORLEVEL 1 (echo NOT RUNNING) ELSE (echo RUNNING) 
0
@echo off 

color 1F 


@sc query >%COMPUTERNAME%_START.TXT 

ECHO REPORT MISSING INSTALL SERVICES >%COMPUTERNAME%_MISSING.TXT 


find /I "AcPrfMgrSvc" %COMPUTERNAME%_START.TXT >nul 

IF ERRORLEVEL 1 NET START "AcPrfMgrSvc" 

IF ERRORLEVEL 1 ECHO AcPrfMgrSvc >>%COMPUTERNAME%_MISSING.TXT 
0

我的解决办法,因为Windows7的下只是IF ERRORLEVEL 1不起作用,错误级别为0的情况下,findstr成功与否。

就我而言,我正在寻找的东西通过的java.exe开始,可以说HELLO.jar [java.exe的参数]

wmic PROCESS LIST FULL | findstr /I java.exe | findstr /I HELLO.jar 

    if ErrorLevel 1 (
     Echo OK 
     msg "%username%" HELLO.jar not started 
      Pause 
    ) else (
     Echo ERR 
     msg "%username%" HELLO.jar already running 
      Pause 
     exit 
    ) 
相关问题