2010-10-07 26 views

Trả lời

-4

bạn có thể chạy "net stop [servicename]" nếu nó không thành công với "tên dịch vụ là không hợp lệ" các dịch vụ không được cài đặt

+8

Sai! Ngay cả việc đình chỉ ngắn của một số dịch vụ có thể không được mong muốn, một số dịch vụ được bảo vệ và không thể dừng lại được nữa. – ST3

+0

Tôi cũng đồng ý rằng điều này không được đánh dấu là câu trả lời mặc dù nó có thể hoạt động trong một số trường hợp. – leeman24

46

Hãy thử điều này:

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

:MISSING 
ECHO SERVICE MISSING 

:END 

Lưu ý rằng SC QUERY lệnh truy vấn theo tên dịch vụ ngắn không phải tên hiển thị. Bạn có thể tìm thấy tên này bằng cách nhìn vào tab General của thuộc tính của dịch vụ trong Service Manager.

0

Dưới đây là ví dụ sử dụng sc query để xác minh xem dịch vụ cửa sổ đã được cài đặt chưa và dừng tìm thấy.

 
    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

gì về:

sc interrogate "nameofyourservicehere" 

tôi đã tìm thấy điều này thực sự hữu ích vì tasklist sẽ không cung cấp thông tin về việc liệu các dịch vụ được cài đặt hay không. (hoặc tôi không tìm cách)

+2

Điều này sẽ kiểm tra xem Dịch vụ có đang chạy không. Tuy nhiên 'sc GetDisplayName ServiceName' sẽ hoạt động để kiểm tra cài đặt – Robin

8

Bạn nên sử dụng "truy vấn", không phải "Dừng" hoặc lệnh khác, "Dừng" có thể ngừng dịch vụ của bạn nếu nó tồn tại, sau đó đây không phải là cách đúng.

@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. 
Các vấn đề liên quan