将批处理文件作为Windows服务运行

时间:2009-01-06 04:02:28

标签: windows windows-services batch-file

为了运行一个应用程序,必须启动批处理文件(执行诸如启动Jetty,显示实时日志等操作)。仅当此批处理文件正在运行时,该应用程序才有效。因此,我被迫让这个批处理文件运行,而不是从Windows服务器注销。

此批处理文件可以作为服务运行吗?我正在尝试similar question

中的一项建议

10 个答案:

答案 0 :(得分:124)

NSSM完全免费且超级简单,以管理员身份运行命令提示符/终端:

nssm install "YourCoolServiceNameLabel"

然后会出现一个对话框,您可以选择要运行的文件的位置。

卸载

nssm remove "YourCoolServiceNameLabel"

答案 1 :(得分:58)

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

答案 2 :(得分:10)

有一个内置的Windows cmd可以执行此操作:sc create。不像nssm那样花哨,但是您不必下载其他软件。

sc create "ServiceName" start= demand displayname= "DisplayName" binpath= [path to .bat file]

注意

  • start =需求意味着您必须自己启动服务
  • =之后需要
  • 空格
  • 我在服务启动时确实遇到错误,该服务未及时响应,但是很明显该服务已成功运行.bat。尚未深入研究,但是这个thread遇到了同样的事情,并使用nssm来解决该问题,以安装服务。

答案 3 :(得分:3)

正如Doug Currie所说,使用RunAsService。

根据我过去的经验,您必须记住您生成的服务

  • 拥有完全不同的环境变量集
  • 必须仔细检查权利/权限问题
  • 如果打开要求输入任何类型的对话框,可能会造成严重破坏

不确定最后一个是否仍适用...这是我前一段时间工作过的一个大夜晚的母马。

答案 4 :(得分:3)

虽然它不是免费的(但是39美元),FireDaemon对我来说效果很好,我必须推荐它。它将运行您的批处理文件,但具有许多其他非常有用的功能,例如调度,服务监视,基于GUI或XML的服务安装,依赖项,环境变量和日志管理。

我开始使用FireDaemon来启动JBoss应用程序服务器( run.bat ),但很快意识到FireDaemon配置功能的丰富性让我放弃了批处理文件并重新创建了它的意图FireDaemon服务定义中的命令。

还有一个名为Trinity的SUPER FireDaemon,如果您有大量的Windows服务器可以管理此服务(或技术上的任何服务),您可能需要查看它。

答案 5 :(得分:1)

不需要额外的软件。使用任务计划程序->创建任务->隐藏。隐藏复选框位于左下角。将任务设置为在登录时触发(或您喜欢的任何条件),然后在“操作”选项卡中选择任务。隐藏运行它可以确保任务像服务一样在后台静默运行。

请注意,还必须将程序设置为“无论用户是否登录”,都可以运行,否则程序仍将在前台运行。

答案 6 :(得分:1)

安装 NSSM 并将 .bat 文件作为 Windows 服务运行。 按预期工作

答案 7 :(得分:0)

AlwaysUp可以轻松地将批处理文件作为服务运行。它类似于FireDaemon(如上所述)并且不是免费的,但您可能会发现丰富的功能集在专业环境中是一种资产。

祝你好运!

答案 8 :(得分:0)

由于不再维护 NSSM,您可以考虑使用 WinSW。它具有可以使用或不使用 .Net 的二进制文件。

基本上,您创建一个 XML 文件,然后安装它。这是一个最小的 XML 示例:

<service>

  <!-- ID of the service. It should be unique across the Windows system-->
  <id>myapp</id>

  <!-- Path to the executable, which should be started -->
  <!-- CAUTION: Don't put arguments here. Use <arguments> instead. -->
  <executable>%BASE%\myExecutable.exe</executable>

</service>

然后你就可以安装并启动它了:

winsw install myapp.xml
winsw start myapp.xml

答案 9 :(得分:-1)

在Windows 2019 Server上,您可以使用以下命令运行Minecraft Java服务器:

sc create minecraft-server DisplayName =“ minecraft-server” binpath =“ cmd.exe / C C:\ Users \ Administrator \ Desktop \ rungui1151.lnk” type = own start = auto

.lnk文件是批处理文件的标准Windows快捷方式。

--- .bat文件开始---

java -Xmx40960M -Xms40960M -d64 -jar minecraft_server.1.15.1.jar

--- .bat文件结束---

所有这一切是因为:

服务不知道如何在文件夹中启动

cmd.exe不知道如何在文件夹中启动

启动服务将产生“及时方式”错误,但是日志文件显示服务器正在运行。

如果您需要关闭服务器,只需进入任务管理器并在后台进程中找到服务器Java并结束它,或者使用/ stop命令从游戏中终止服务器,或者对于其他程序/服务器,使用与服务器相关的方法。