Esto no siempre funciona (depende de cómo se carga el programa), pero normalmente puede crear un archivo por lotes como este:
@Echo off
:Start
NotePad
echo Program terminated at %Date% %Time% with Error %ErrorLevel% >> c:\logs\program.log
echo Press Ctrl-C if you don't want to restart automatically
ping -n 10 localhost
goto Start
He usado el Bloc de notas como ejemplo.
Las líneas
echo Press Ctrl-C if you don't want to restart automatically
ping -n 10 localhost
son solo un retraso (de 10 segundos) para dar al usuario la oportunidad de abortar el proceso antes de que se inicie nuevamente.
La línea
echo Program terminated at %Date% %Time% with Error %ErrorLevel% >> c:\logs\program.log
no es necesario, pero registraría cada vez que el programa se cerrara a un archivo, por lo que podría ser útil diagnosticar el problema. mensaje cero si no lo hace
Tenga en cuenta que usted menciona que su programa no hace nada si ya se está ejecutando. Eso generalmente significa que la aplicación se inicia, detecta que ya se está ejecutando otra copia y se cierra de inmediato. Si ese es el caso, y su programa se está ejecutando antes de iniciar este archivo por lotes, entonces el lote se repetirá e intentará iniciar su programa cada diez segundos.