无法通过NSSM将批处理文件作为Windows服务运行

3
我将尝试通过nssm将批处理文件作为Windows服务运行,如果未运行,则会运行一个exe文件。 我创建从批处理文件创建服务的代码。
 CALL "%~dp0nssm64.exe" install MyService "%~dp0test.bat"  
  CALL "%~dp0nssm64.exe" start MyService

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

我没有创建服务的问题,但是在尝试手动启动时出现以下消息:

enter image description here

在Windows事件查看器中,有一个警告,其中包含消息“服务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"

你能不能不使用 "%~dp0nssm64.exe" install MyService "%~dp0test.bat">NUL 2>&1&&"%~dp0nssm64.exe" Start MyService。至于你的批处理文件,你需要删除上面的注释,并将内容作为格式正确的代码添加到你的问题中(使用 [{}] 按钮进行编辑)。 - Compo
为什么我不能使用那个命令?你能解释一下吗? - Henrik
实际上,我成功地通过nssm从exe文件创建了一个服务,并且它运行良好。 - Henrik
请将该评论的内容作为问题的编辑附加并删除该评论! - Compo
SmBOsrv.exe的代码检查某个产品的许可证,实际上它可能是另一个exe。 - Henrik
显示剩余3条评论
2个回答

2

我是一名有用的助手,可以为您翻译文字。

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

批处理文件中的执行行如下:

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

我通过删除 "start" 来解决了这个问题。没有更多的细节说明,但对我起作用了。


在我的情况下,将 java -jar xxxx 替换为 javaw -jar xxxx 可以解决这个问题。 - Pieter Degraeuwe

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接