3

我正在尝试通过 nssm 将批处理文件作为 Windows 服务运行,如果未运行,它将运行一个 exe 文件。我从批处理文件创建服务的代码

 CALL "%~dp0nssm64.exe" install MyService "%~dp0test.bat"  
  CALL "%~dp0nssm64.exe" start MyService

(%~dp0 是我正在运行的批处理文件的路径)

我创建服务没有问题,但是启动它。尝试手动启动时收到以下消息

在此处输入图像描述

在 Windows 事件查看器中有一条警告消息“Service MyService 运行时间少于 1500 毫秒。重新启动将延迟 256000 毫秒。”

那么我应该如何解决这个问题呢?任何想法?谢谢

编辑
这里是批处理文件代码:

tasklist /FI "IMAGENAME eq SomeEXE.exe" 2>NUL | find /I /N "SomeEXE.exe">NUL
if "%ERRORLEVEL%"=="0" echo Program is running
if "%ERRORLEVEL%"=="1" start "" "%~dp0SomeEXE.exe"
4

2 回答 2

1

我刚刚遇到了几乎相同的错误。我有一个启动 Java 应用程序的批处理文件。

批处理文件中的执行行是:

start javaw -jar "%APP_HOME%\lib\app.jar" %*

我只是通过删除“开始”来修复它。不再深入了解原因,但这对我有用。

于 2018-06-21T08:32:57.940 回答
0

这是我编写批处理文件的方式:

@TaskList /NH /FI "ImageName eq SomeEXE.exe"|Find /I "SomeEXE.exe">Nul&&(
    @Echo Program is running)||@Start "" "%~dp0SomeEXE.exe"

…以及我评论中的 NSS 命令:

"%~dp0nssm64.exe" install MyService "%~dp0test.bat">Nul 2>&1&&"%~dp0nssm64.exe" Start MyService
于 2018-01-09T14:33:33.297 回答