Cela ne fonctionne pas toujours (cela dépend en quelque sorte de la façon dont le programme se charge), mais normalement vous pouvez créer un fichier batch comme celui-ci:
@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
J'ai utilisé le Bloc-notes comme exemple.
Les lignes
echo Press Ctrl-C if you don't want to restart automatically
ping -n 10 localhost
sont juste un délai (de 10 secondes) pour donner à l'utilisateur la possibilité d'interrompre le processus avant qu'il ne redémarre.
La ligne
echo Program terminated at %Date% %Time% with Error %ErrorLevel% >> c:\logs\program.log
n'est pas nécessaire, mais se connecterait chaque fois que le programme était fermé dans un fichier, il pourrait donc être utile de diagnostiquer le problème. Le niveau d'erreur peut ne pas vous en dire beaucoup, mais un programme est censé renvoyer 0 s'il s'est fermé normalement, et un non -message zéro si ce n'est pas le cas
Remarque, vous mentionnez que votre programme ne fait rien s'il est déjà en cours d'exécution. Cela signifie généralement que l'application démarre, détecte qu'une autre copie est déjà en cours d'exécution et s'arrête immédiatement. Si tel est le cas, et que votre programme est en cours d'exécution avant de démarrer ce fichier de commandes, le lot effectuera une boucle et tentera de démarrer votre programme toutes les dix secondes.