2010-10-07 5 views
14

मुझे यह जांचने की ज़रूरत है कि एक बैच फ़ाइल से Windows सेवा स्थापित है या नहीं। यदि मुझे आवश्यकता हो तो मैं बैच के अलावा किसी अन्य चीज़ में डुबकी लगा सकता हूं, लेकिन मैं नहीं करना चाहूंगा। क्या इसे करने का कोई तरीका है?कोई कैसे पता लगाता है कि विंडोज सेवा (अधिमानतः) केवल बैच का उपयोग करके स्थापित की जाती है?

उत्तर

-4

आप चला सकते हैं "शुद्ध रोक [SERVICENAME]" अगर यह सेवा

+8

गलत! यहां तक ​​कि कुछ सेवाओं के छोटे निलंबन भी नहीं चाहते थे, कुछ और सेवाएं सुरक्षित हैं और इसे रोका नहीं जा सका। – ST3

+0

मैं यह भी मानता हूं कि इसे उत्तर के रूप में चिह्नित नहीं किया जाना चाहिए हालांकि यह कुछ मामलों में काम कर सकता है। – leeman24

46

स्थापित नहीं है के साथ "सेवा नाम अवैध है" विफल रहता है इसे आज़माएं:

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

:MISSING 
ECHO SERVICE MISSING 

:END 

ध्यान दें कि SC QUERY आदेश लघु सेवा नाम से प्रश्न प्रदर्शन नाम नहीं है। आप सेवा प्रबंधक में किसी सेवा के गुणों के सामान्य टैब को देख कर यह नाम पा सकते हैं।

0

यहां एक उदाहरण है कि यह सत्यापित करने के लिए sc query का उपयोग कर रहा है कि कोई विंडोज सेवा स्थापित है या नहीं।

 
    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. 
2

किस बारे में:

sc interrogate "nameofyourservicehere" 

मैं tasklist के बाद से यह वास्तव में उपयोगी लगी सेवा स्थापित है या नहीं पर जानकारियां नहीं देंगे। (या मुझे नहीं मिला)

+2

वैसे यह जांचता है कि सेवा चल रही है या नहीं। हालांकि 'एससी GetDisplayName ServiceName' स्थापित करने के लिए काम करेगा – Robin

8

आपको "क्वेरी" का उपयोग करना चाहिए, न कि "रोकें" या कुछ और कमांड, "रोकें" आपकी सेवा को रोक सकता है यदि यह अस्तित्व में है, तो यह सही तरीका नहीं है।

@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. 
संबंधित मुद्दे