Не удается запустить командный файл как службу Windows через nssm

Я пытаюсь запустить пакетный файл как службу Windows через nssm, который запустит исполняемый файл, если он не запущен. Мой код для создания службы из командного файла

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

(%~dp0 — это путь к пакетному файлу, который я запускаю)

У меня нет проблем с созданием сервиса, но с его запуском. Я получаю следующее сообщение при попытке запустить его вручную

введите здесь описание изображения

В средстве просмотра событий 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"

person Henrik    schedule 09.01.2018    source источник
comment
Вы не можете использовать, "%~dp0nssm64.exe" install MyService "%~dp0test.bat">NUL 2>&1&&"%~dp0nssm64.exe" Start MyService. Что касается вашего пакетного файла, вам необходимо удалить комментарий выше и добавить содержимое в виде правильно отформатированного кода, (с помощью кнопки [{}]), на ваш вопрос по редактируя его.   -  person Compo    schedule 09.01.2018
comment
Почему я не могу использовать эту команду? Могли бы вы объяснить?   -  person Henrik    schedule 09.01.2018
comment
На самом деле мне удалось создать службу из exe-файла через nssm, и она работала хорошо.   -  person Henrik    schedule 09.01.2018
comment
Хенрик, я отредактировал ваш вопрос, включив в него код вашего пакетного файла, а теперь удалите свой вступительный комментарий!   -  person Compo    schedule 09.01.2018
comment
Ошибка не обязательно связана с пакетным файлом или командой NSS. Было бы полезно, если бы вы обновили свой вопрос, указав подлинные имена файлов и точное содержание всего, что вы запускали, что вызвало ошибку, вместо того, чтобы пытаться скрыть некоторые из них и изменить ответы самостоятельно. И еще раз, пожалуйста, удалите свой вступительный комментарий!   -  person Compo    schedule 09.01.2018
comment
Спасибо. ======= check_exe.bat @TaskList /NH /FI ImageName eq SmBOsrv.exe|Найти /I SmBOsrv.exe›Nul&&( Программа @Echo запущена)||@Start %~dp0SmBOsrv.exe ==== == create_service.bat %~dp0nssm64.exe установить smboconfig %~dp0check_exe.bat›Nul 2›&1&&%~dp0nssm64.exe Запустить smboconfig   -  person Henrik    schedule 09.01.2018
comment
Пожалуйста, добавьте содержание этого комментария в качестве редактирования к вашему вопросу и удалите комментарий!   -  person Compo    schedule 09.01.2018
comment
Кроме того, я и, что более важно, Google никогда не слышали о SmBOsrv.exe, поэтому вам, вероятно, также потребуется предоставить некоторые подробности об этом в своем вопросе!   -  person Compo    schedule 09.01.2018
comment
Код SmBOsrv.exe проверяет лицензию какого-то продукта, на самом деле это может быть другой exe   -  person Henrik    schedule 10.01.2018


Ответы (2)


Я только что столкнулся с почти такой же ошибкой. У меня есть пакетный файл, который запускает приложение Java.

Строка выполнения в командном файле была:

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

Я просто исправил это, удалив «старт». Нет больше понимания, почему, но это сработало для меня.

person user1855599    schedule 21.06.2018
comment
в моем случае замена java -jar xxxx на javaw -jar xxxx устранила проблему - person Pieter Degraeuwe; 16.12.2018

Вот как я бы написал командный файл:

@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
person Compo    schedule 09.01.2018