Làm cách nào để tạo một dịch vụ chạy tệp .bat trên Windows 2008 Server?


21

Tôi đã tạo dịch vụ bằng cách sử dụng

sc create myService binpath=myservice.bat

Nhưng khi tôi khởi động nó, nó không thành công với thông báo lỗi sau:

[SC] StartService FAILED 1053:
    The service did not respond to the start or control request in a timely fashion.

Trên Win2k3 tôi đã sử dụng srvany.exe từ bộ Tài nguyên, nhưng không có bộ tài nguyên nào cho win2k8. Hiện tại tôi đã cài đặt srvany.exe trên máy của mình, nhưng tôi không nghĩ đó là cách tốt nhất để làm điều đó.

Cảm ơn!


1
Bạn có thể chạy một tập tin hàng loạt như một dịch vụ? Sẽ không một nhiệm vụ theo lịch trình sẽ tốt hơn? Tôi biết nếu bạn sử dụng Dịch vụ Windows thực tế, sự kiện OnLoad cần quay lại trong vòng vài giây.
tsilb

Câu trả lời:


9

Tất nhiên bạn không thể chạy một dịch vụ như thế. Bạn đã thử sử dụng srvany trong máy chủ 2008 chưa? Theo như tôi biết thì không có phiên bản 'chính thức' của srvany cho s2k8, nhưng bạn luôn có thể thử, phải không?

EDIT: Ồ, tôi quên mất! Chúng tôi cũng sử dụng FireDaemon để chạy các ứng dụng phi dịch vụ như các dịch vụ. Mặc dù vậy, nó không miễn phí và chức năng của nó hơi quá so với nhu cầu của bạn.


Đó là những gì tôi đã viết tôi đã làm.
abyx

hmm .. điều này thật kỳ lạ Nó chỉ lọc qua não tôi. Lấy làm tiếc. Dù bằng cách nào, srvany dường như là điều tốt nhất để làm trong tình huống này.
shylent

srvany hoạt động vào năm 2008 (Tôi sử dụng nó để cài đặt và chạy Winamp.exe như một dịch vụ trên máy chủ gia đình) ... nhưng bạn không thể chỉ chạy một tập tin bat.
Oskar Duveborn

24

Sử dụng NSSM để chạy tệp .BAT hoặc bất kỳ tệp .EXE cũ nào dưới dạng dịch vụ. Nó gần như là một sự thay thế cho SRVANY và là một ứng dụng không rườm rà.

http://iain.cx/src/nssm/

Tôi gặp vấn đề tương tự như bạn và NSSM là tiện ích duy nhất hoạt động.


3
Tôi đã không nghe nói về điều này trước đây, nhưng nó dường như là một công cụ có giá trị. Cảm ơn vì tiền hỗ trợ.
Skyhawk

Cảm ơn bạn nó đã làm việc cho tôi. Mặc dù tôi vẫn đang tìm kiếm các tùy chọn để dừng dịch vụ tại một thời điểm nhất định.
Ankit

8

Chúng tôi sử dụng Trình lập lịch tác vụ để chạy tác vụ bất cứ khi nào máy tính khởi động (bất kể người dùng có đăng nhập hay không)


1
để ẩn cửa sổ hãy đọc cái này hoặc cái này nếu bạn không vui khi chạy như một hệ thống
JonnyRaa 23/2/2015

7

Bạn không thể chạy tệp .BAT hoặc bất kỳ tệp .EXE cũ nào dưới dạng dịch vụ. Các dịch vụ Windows không hoạt động mà bạn. Bạn có thể sử dụng một tiện ích như Trình quản lý dịch vụ không hút (NSSM) hoặc tiện ích SRVANY không miễn phí của Microsoft để chạy một chương trình tùy ý như một dịch vụ, nhưng bạn có thể thấy rằng bạn không có hành vi dừng rất "duyên dáng".


3

Lệnh SC chỉ cần thêm các mục đăng ký cần thiết cho một dịch vụ - nếu tệp bạn chỉ định không phải là dịch vụ hợp lệ thì nó sẽ không biến nó thành một.


2

từ: bài đăng này trên các diễn đàn kỹ thuật: http://social.technet.microsoft.com/Forums/en-US/winserverMigration/thread/98a97aee-c62b-4683-94ab-3777899cf7de/

Đây là những gì để làm ...

Tại thời điểm đăng bài này, không có Công cụ Bộ tài nguyên Windows Server 2008, vì vậy hãy lấy "srvany.exe" từ "Công cụ Bộ tài nguyên Windows Server 2003" và sao chép nó vào một vị trí phù hợp trên máy chủ Win2008 của bạn (ví dụ: C: \ Windows \ System32 \). Sử dụng "sc" để tạo một dịch vụ mới khởi chạy "srvany" (ví dụ: sc tạo MyService binPath = C: \ Windows \ System32 \ srvany.exe DisplayName = "Dịch vụ tùy chỉnh của tôi") Sử dụng RegEdit: tạo khóa "Tham số" cho bạn dịch vụ (ví dụ: HKEY_LOCAL_MACHINE \ HỆ THỐNG \ CurrentControlset \ Services \ MyService \ Paramaters \) Sử dụng RegEdit: trong khóa "Tham số" mới được tạo, tạo một giá trị chuỗi có tên là "Ứng dụng" và nhập đường dẫn đầy đủ đến ứng dụng bạn muốn chạy như một dịch vụ. (Không cần trích dẫn.)

Và rằng nên làm điều đó.

Lưu ý: một số ứng dụng lưu trữ cài đặt của chúng trong tổ hợp người dùng, không thuộc HKEY_LOCAL_MACHINE, vì vậy bạn sẽ cần chạy ứng dụng để định cấu hình nó, sau đó định cấu hình dịch vụ để chạy như người dùng đó.


2

Hãy thử nó ... nó làm việc cho tôi ..

sc create ServiceTest binpath= "C:\Windows\System32\cmd.exe /C C:\ServiceTest\Jenkins-Slave.bat"

Nó cũng không làm việc cho tôi! Lỗi tương tự như OP - Không bắt đầu đúng lúc.
Ravindra HV

Ditto - đã không làm việc.
Spedge

0

Tôi vấp phải điều này. Đây là công cụ có tên Bat_To_Exe_Converter. Rất dễ dàng để chuyển đổi bất kỳ tệp .bat thành tệp .exe. Thử nó. Tải xuống trình tải xuống trước và nó sẽ tự động tải xuống Bat_To_Exe_Converter sau đó. Nó thực sự giúp tôi tạo ra dịch vụ chạy tệp .bat của tôi thông qua .exe. http://doad.cnet.com/Bat-To-Exe-Converter/3001-2069_4-10555897.html?spi=eae5ab48292cc101b5f0ec370cf99ad0


Chào mừng bạn đến với Lỗi Máy chủ! Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
Scott Pack


0

Tôi tìm thấy hai tùy chọn khác mà bạn sẽ không lấy được ví của mình.

Bạn có thể sckhởi chạy srvanymà sau đó trỏ đến chương trình của bạn. (có một bài đăng trên diễn đàn mà tôi không thể liên kết đến vì tôi không có đủ đại diện ở đây mặc dù tôi làm trên StackOverflow - càu nhàu)

Dưới đây là các bước mà poster gốc sử dụng:

  1. Sử dụng scđể tạo một dịch vụ mới ra mắt srvany(ví dụ sc create MyService binPath=C:\Windows\System32\srvany.exe DisplayName="My Custom Service")
  2. Sử dụng RegEdit: tạo Parameterskhóa cho dịch vụ của bạn (ví dụ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters\)
  3. Sử dụng RegEdit: trong khóa vừa tạo Parameters, tạo một giá trị chuỗi được gọi Applicationvà nhập đường dẫn đầy đủ đến ứng dụng bạn muốn chạy như một dịch vụ. (Không cần trích dẫn.)

Nếu đó có vẻ là một chút hack , thì bạn có thể xây dựng một dịch vụ .NET để khởi chạy quy trình của mình. Nếu bạn muốn bỏ qua một vài bước, đây là một dịch vụ .NET nguồn mở có thể khởi chạy các quy trình chung:

http://www.codeproject.com/KB/system/xyntservice.aspx

Tinh chỉnh nó theo nhu cầu của bạn nhưng nó sẽ làm hầu hết những gì bạn muốn ra khỏi hộp.


Và có phải srvany mà bạn đề cập, một trong Win2k3 không có phiên bản hỗ trợ cho Win2k8?
LarsH
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.