A execução de um arquivo de lote como um serviço é um aplicativo bastante estranho, e há uma probabilidade razoável de que você tenha problemas.
Supondo que você tenha um arquivo em lote executado em um loop contínuo, suponho que você possa executar o arquivo em lote como um serviço. Como a Warner diz, você vai querer ter que usar um wrapper "service manager" (como o SRVANY que a Warner menciona, ou o livre Non -Sucking Service Manager (NSSM) ).
A descrição de Warner de criar um serviço com SC, referenciando SRVANY, está correta. Para algum conhecimento técnico: Um programa de serviço real responde às funções de controle do gerenciador de controle de serviço (SCM). Essas funções de controle permitem que o gerenciador de controle de serviço (e, portanto, o snap-in do console de gerenciamento de Serviços, etc.) pare, inicie, pause, etc., o programa de serviço. O fluxo básico é:
SCM - (invoca) - > invólucro (SRVANY, NSSM) - (invoca) - > seu programa
Se o seu arquivo em lote gerar processos adicionais quando você parar o serviço (o que realmente está parando o programa wrapper), você verá que os programas gerados pelo seu arquivo em lote não serão mortos e permanecerão indefinidamente.
O SRVANY também não monitora seu arquivo de lote (em execução no CMD.EXE) e, se o programa "morre", o "serviço" permanecerá listado como "iniciado". (O NSSM pode monitorar o CMD.EXE filho e reiniciá-lo, mas o NSSM ainda sofre com o problema de não matar processos filho do arquivo de lote na parada de serviço).
O NSSM tem uma GUI para ajudar a criar o serviço e associá-lo ao seu programa. Você pode gostar disso se não for um tipo de pessoa de linha de comando e manipulação de registros.
No geral, a execução de programas que não são de serviço em wrappers não é uma prática recomendada. Eu faço isso em alguns ambientes de produção, mas eu sempre sou cauteloso com isso e tento testar muito esses aplicativos antes de considerá-lo "funcionando".