运行batch file作为Windows服务

为了运行一个应用程序,一个batch file必须被启动(这就像启动Jetty,显示实时日志等)。 只有当这个batch file正在运行时,应用程序才能工作 我因此被迫有这个batch file运行,而不是从Windows服务器注销。

该batch file可以作为服务运行吗? 我正在试验类似问题的build议之一。

NSSM是完全免费和超级简单的,以pipe理员身份运行命令提示符/terminal:

nssm install "YourCoolServiceNameLabel" 

那么会出现一个对话框,以便您可以select要运行的文件的位置。

卸载

 nssm remove "YourCoolServiceNameLabel" 

为什么不简单地将其设置为计划在启动时运行的计划任务?

正如Doug Currie所说的使用RunAsService。

从我过去的经验来看,你必须记住你所生成的服务

  • 有一套完全不同的环境variables
  • 必须仔细检查权限/权限问题
  • 如果打开要求input的对话框,可能会造成严重的后果

不知道最后一个是否还适用…这是我前一段时间做的一个项目中的一个大夜晚。

虽然它不是免费的(但是39美元), FireDaemon对我来说工作得非常好,我不得不推荐它。 它会运行你的batch file,但是会有一些额外的,非常有用的function,如调度,服务监控,基于GUI或XML的服务安装,依赖,环境variables和日志pipe理。

我开始使用FireDaemon来启动JBoss应用程序服务器( run.bat ),但不久之后才意识到FireDaemonconfigurationfunction的丰富性使我可以放弃batch file,并在FireDaemon服务定义中重新创build其命令的意图。

还有一个名为Trinity的SUPER FireDaemon,如果你有大量的Windows服务器来pipe理这个服务(或者从技术上说,任何服务),你可能会想看看。

AlwaysUp可以轻松地将batch file作为服务运行。 它类似于FireDaemon(上面提到的),并不是免费的,但是您可能会发现在专业环境中丰富的function将成为一项资产。

祝你好运!