2011-05-09 118 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 
    ) 
相關問題