2010-10-07 8 views

risposta

-4

è possibile eseguire "net stop [servicename]" se fallisce con "il nome del servizio non è valido" il servizio non è installato

+8

Sbagliato! Anche la sospensione breve di alcuni servizi potrebbe non essere desiderata, inoltre alcuni servizi sono protetti e non possono essere interrotti. – ST3

+0

Concordo anche sul fatto che questo non dovrebbe essere contrassegnato come risposta, anche se potrebbe funzionare in alcuni casi. – leeman24

46

Prova questo:

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

:MISSING 
ECHO SERVICE MISSING 

:END 

Nota che il comando SC QUERY query dal nome del servizio breve non il nome visualizzato. È possibile trovare questo nome guardando la scheda Generale delle proprietà di un servizio in Gestione servizi.

0

Ecco un esempio utilizzando sc query per verificare se è installato un servizio di Windows e fermarsi se trovato.

 
    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

che dire:

sc interrogate "nameofyourservicehere" 

ho trovato davvero utile in quanto tasklist non darà informazioni sul fatto che il servizio sia installato o meno. (o non ho trovato il modo)

+2

Bene questo controlla se il Servizio è in esecuzione. Tuttavia 'sc GetDisplayName ServiceName' funzionerebbe per controllare installato – Robin

8

Si dovrebbe usare "query", non "Stop" o qualcos'altro comando, lo "Stop" può interrompere il servizio se esiste, quindi non è la strada giusta.

@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. 
Problemi correlati