Làm cách nào bạn kiểm tra xem dịch vụ WIN32 có tồn tại không và nếu có, hãy thực hiện một số thao tác?Nếu Điều kiện tồn tại của dịch vụ
Trả lời
Tắt đầu của tôi, bạn có thể kiểm tra xem một dịch vụ cụ thể có đang hoạt động hay không, như đã đề cập bởi bmargulies, sử dụng lệnh "net", đưa kết quả vào "tìm". Một số thông tin như sau sẽ kiểm tra xem một dịch vụ có đang chạy hay không, và nếu có thì dừng lại. Sau đó bạn có thể bắt đầu nó mà không cần lo lắng về việc nếu nó đã chạy hay không:
net start | find "SomeService"
if ERRORLEVEL 1 net stop "SomeService"
net start "SomeService"
Nếu bạn đang sử dụng findstr để thực hiện tìm kiếm, như một số các câu trả lời khác đã gợi ý, sau đó bạn sẽ kiểm tra ERRORLEVEL bằng 0 (zero) ... nếu nó được sau đó bạn đã tìm thấy chuỗi bạn đang tìm kiếm:
net start | findstr "SomeService"
if ERRORLEVEL 0 net stop "SomeService"
net start "SomeService"
về cơ bản hầu hết các hệ điều hành DOS lệnh sẽ thiết lập ERRORLEVEL, cho phép bạn kiểm tra xem một cái gì đó giống như một phát hiện đã thành công.
Bạn không thể làm điều này trong DOS, vì DOS không phải là Windows và thậm chí không có khái niệm về "dịch vụ".
Trong một lô của Windows nộp bạn có thể sử dụng lệnh sc
để tìm các dịch vụ:
sc query | findstr SERVICE_NAME
này sẽ liệt kê tất cả các dịch vụ và mang tên của mình.
Bạn có thể tìm kiếm một dịch vụ cụ thể với
sc query | findstr /C:"SERVICE_NAME: myservice"
Hãy nhớ rằng tìm kiếm này là trường hợp nhạy cảm. Bạn có thể thêm công tắc /I
vào findstr
để tránh điều đó.
Làm thế nào về việc sử dụng WMIC
:
danh sách đầu tiên tất cả các quy trình, sau đó grep tên quá trình của bạn. Không có kết quả nào được in nếu nó không tồn tại.
wmic service |findstr "ProcessName"
Ví dụ:
C:\>wmic service |findstr "Search"
FALSE TRUE Windows Search
làm thế nào mà sẽ làm việc trong một tuyên bố nếu? – Burt
@Burt: nếu tuyên bố bằng ngôn ngữ nào? hàng loạt, vbscript, C# hoặc thậm chí perl? Chắc chắn nó sẽ dễ dàng hơn nhiều nếu bạn cài đặt wc (một phần của coreutils trong gnu32), bạn sẽ làm c:> wmic service | findstr "Tìm kiếm" | wc -l, sau đó viết một số mã để lấy số đó để xác định. –
Chỉ cần một phụ lục cho câu trả lời chấp nhận. Nếu bạn đang tìm cách làm những việc khác ngoài việc khởi động lại dịch vụ và đang tìm cách xem dịch vụ đã được cài đặt chưa.
sc query state= all | findstr /C:"SERVICE_NAME: MyService"
if ERRORLEVEL 0 (**My Operation**)
Trong trường hợp này, tình trạng = tất cả rất quan trọng vì nếu dịch vụ không bắt đầu, nó sẽ được hiểu là không được cài đặt, đó là hai việc riêng biệt.
Như đã đề cập, điều này phải là: 'if not ERRORLEVEL 1 (** My Operation **)' – bstoney
Không nên kiểm tra thành công: "if (not) errorlevel 1" ??
Trong cửa sổ shell "nếu errorlevel #" có nghĩa là errorlevel là # hoặc cao hơn, vì vậy "nếu errorlevel 0" là đúng.
là câu trả lời cho "làm cách nào để kiểm tra xem chạy một tệp thực thi có hoạt động được" hay không. được cài đặt hoặc chạy –
Tôi đã biết, nhưng tôi không có quyền viết nhận xét vào lúc này. – user2956477
Tôi đang sử dụng mã bên dưới:
SC QUERY | FIND "SERVICE_NAME: MyService"
IF %ERRORLEVEL% EQU 0 NET STOP MyService
Nếu MyService không được tìm thấy,% ERRORLEVEL% sẽ được đặt ở 1 bởi FIND, nếu không nó sẽ ở lại ở mức 0.Lệnh IF% ERRORLEVEL% EQU 0 cho phép bạn kiểm tra trường hợp cuối cùng này và tiến hành một thao tác trên dịch vụ của bạn.
IF ERRORLEVEL 0 NET STOP MyService
sẽ không hoạt động vì nó thực hiện lệnh nếu% ERRORLEVEL% lớn hơn hoặc bằng không.
Trong Visual Studio bài xây dựng sự kiện, bạn cần phải đặt một:
EXIT 0
ở cuối vì VS sẽ phát hiện rằng% ERRORLEVEL% = 0 và nó sẽ cho rằng sự kiện bài build đã thất bại . Sử dụng cẩn thận vì điều này sẽ ẩn tất cả các lỗi trong chuỗi lệnh của bạn.
Với thủ thuật này, bạn có thể bỏ qua lỗi và sử dụng trong bài viết của bạn xây dựng sự kiện để khởi động lại dịch vụ của bạn:
NET STOP MyService
NET START MyService
EXIT 0
- 1. chèn có điều kiện sql nếu hàng không tồn tại
- 2. Nếu tồn tại hoặc tồn tại?
- 3. Chèn hàng nếu không tồn tại dẫn đến điều kiện chủng tộc?
- 4. xem nếu src của img tồn tại
- 5. XPath tuyên bố điều kiện đơn giản? Nếu nút X tồn tại, hãy thực hiện Y?
- 6. Kiểm tra nếu KeyValuePair tồn tại với LINQ của FirstOrDefault
- 7. Dịch vụ "security.authentication.manager" có sự phụ thuộc vào dịch vụ không tồn tại "security.user.provider.concrete.fos_userbundle"
- 8. $ .ajax nếu điều kiện
- 9. JavaScript nếu var tồn tại
- 10. Lỗi 1001: Dịch vụ được chỉ định đã tồn tại. Không thể xóa dịch vụ hiện tại
- 11. Bụi nếu điều kiện
- 12. LINQ - nếu điều kiện
- 13. Tạo nếu không tồn tại
- 14. PL/SQL biên dịch có điều kiện về sự tồn tại của đối tượng cơ sở dữ liệu
- 15. Kiểm tra sự tồn tại của thư mục và tạo ra nếu không tồn tại
- 16. xargs - nếu điều kiện và tiếng vang {}
- 17. Sử dụng InstallUtil để gỡ cài đặt dịch vụ không tồn tại
- 18. Chỉ mkdir nếu nó không tồn tại
- 19. PHP RedBean lưu trữ đậu nếu không tồn tại một
- 20. Thời gian kiểm tra biên dịch tồn tại của stdint.h
- 21. Tạo tệp nếu tệp không tồn tại
- 22. Mục tiêu xây dựng CMake có điều kiện dựa trên sự tồn tại của thư viện
- 23. MySQL: Chèn nếu khóa ngoài tồn tại
- 24. Điều chỉnh dịch vụ WCF
- 25. Nhà điều hành tồn tại CoffeeScript và điều này
- 26. PostgreSQL tạo bảng nếu không tồn tại
- 27. Phát hiện nếu phiên PHP tồn tại
- 28. Các sự cố khi sử dụng SharedPreferences trên Dịch vụ (getPreferences không tồn tại trên dịch vụ)
- 29. PL/SQL được chọn - nếu dữ liệu tồn tại
- 30. PHP nếu có nhiều biến tồn tại
dịch vụ gì vào hệ thống? Vui lòng cung cấp thêm ngữ cảnh. –
Nó sẽ là một dịch vụ địa phương cho phép nói tên ABC. Tôi cần phải khởi động lại dịch vụ nếu nó tồn tại như một phần của sự kiện xây dựng bài đăng trong studio trực quan. Các sự kiện xây dựng bài đăng VS về cơ bản là các lệnh batch/dos (??). – Burt