如何创建在Windows 2008 Server上运行.bat文件的服务?


21

我已经使用创建了服务

sc create myService binpath=myservice.bat

但是,当我启动它时,它失败并显示以下错误消息:

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

在Win2k3上,我使用了资源工具包中的srvany.exe,但是没有用于win2k8的资源工具包。目前,我已经在计算机上安装了srvany.exe,但我认为这不是最好的方法。

谢谢!


1
您可以将批处理文件作为服务运行吗?安排好的任务会更好吗?我知道如果您使用实际的Windows服务,则OnLoad事件需要在几秒钟内返回。
tsilb

Answers:


9

当然,您不能运行这样的服务。您是否尝试在Server 2008中使用srvany?据我所知,s2k8没有srvany的“官方”版本,但是您可以随时尝试,可以吗?

编辑:哦,我忘了!我们还使用FireDaemon将非服务应用程序作为服务运行。但是,它不是免费的,并且其功能有点无法满足您的需求。


这是我写的。
2009年

嗯..这很奇怪。它只是在我的大脑中过滤。抱歉。无论哪种方式,在这种情况下,srvany似乎都是最好的选择。
shylent

srvany于2008年开始工作(我使用它来在家庭服务器上作为服务安装和运行Winamp.exe)...但是您不能仅运行bat文件。
奥斯卡·杜夫伯恩

24

使用NSSM将.BAT或任何旧的.EXE文件作为服务运行。它几乎是SRVANY的替代品,并且是一款毫不费吹灰之力的应用程序。

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

我和您有同样的问题,NSSM是唯一起作用的实用程序。


3
我以前没有听说过,但是它似乎是一个有价值的工具。谢谢你的提示。
天鹰

谢谢你为我工作。尽管我仍在寻找在指定时间停止服务的选项。
Ankit 2015年

8

每当计算机启动时,我们都使用Task Scheduler来运行任务(无论用户是否登录)


1
要隐藏窗口阅读,如果你不喜欢运行的系统
JonnyRaa

7

您不能仅将.BAT文件或任何旧的.EXE文件作为服务运行。Windows服务对您不起作用。您可以使用非吸吮服务管理器(NSSM)或Microsoft的非免费SRVANY实用程序之类的实用程序来将任意程序作为服务运行,但是您可能会发现自己没有“非常优雅”的停止行为。


3

SC命令只是为服务添加必需的注册表项-如果您指定的文件不是有效的服务exe,则不会将其变成一个。


2

来自:Technet论坛上的这篇文章:http://social.technet.microsoft.com/Forums/zh-CN/winserverMigration/thread/98a97aee-c62b-4683-94ab-3777899cf7de/

这是做什么的...

在发布本文时,尚无Windows Server 2008资源工具包工具,因此请从“ Windows Server 2003资源工具包工具”中获取“ srvany.exe”,并将其复制到Win2008服务器上的适当位置(例如C: \ Windows \ System32 \)。使用“ sc”创建一个启动“ srvany”的新服务(例如,sc create MyService binPath = C:\ Windows \ System32 \ srvany.exe DisplayName =“ My Custom Service”)使用RegEdit:为您的服务器创建一个“ Parameters”键服务(例如HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MyService \ Paramaters \)使用RegEdit:在新创建的“ Parameters”键中,创建一个名为“ Application”的字符串值,并输入要作为其运行的应用程序的完整路径服务。(无需引号。)

那应该做到的。

注意:某些应用程序将其设置存储在用户配置单元中,而不是在HKEY_LOCAL_MACHINE下,因此您需要运行该应用程序对其进行配置,然后将服务配置为以该用户身份运行。



0

我偶然发现了这件事。这是称为Bat_To_Exe_Converter的工具。将任何.bat文件转换为.exe文件非常容易。试试吧。首先下载下载器,然后它将自动下载Bat_To_Exe_Converter。它确实帮助我创建了通过.exe运行.bat文件的服务。 http://download.cnet.com/Bat-To-Exe-Converter/3001-2069_4-10555897.html?spi=eae5ab48292cc101b5f0ec370cf99ad0


欢迎来到服务器故障!虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
Scott Pack


0

我发现了另外两个选择,您可以不用掏钱了。

您可以sc启动srvany,然后指向您的程序。(有一个论坛帖子我无法链接到该网站,因为尽管我在StackOverflow上做了,但是这里的代表人数不足-抱怨)

以下是原始海报使用的步骤:

  1. 使用sc创建一个新的服务,它的推出srvany(如sc create MyService binPath=C:\Windows\System32\srvany.exe DisplayName="My Custom Service"
  2. 使用RegEdit:Parameters为您的服务创建一个密钥(例如HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MyService\Parameters\
  3. 使用RegEdit:在新创建的Parameters键中,创建一个名为的字符串值,Application然后输入要作为服务运行的应用程序的完整路径。(无需引号。)

如果这看起来有点骇人听闻,那么您可以构建一个.NET服务来启动您的进程。如果您想跳过一些步骤,这是一个可以启动通用进程的开源.NET服务:

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

根据您的需求进行调整,但它可以完成大多数您想做的事情。


您提到的srvany是Win2k3中的一个,它没有Win2k8的受支持版本吗?
LarsH 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.