To nie zawsze działa (to zależy od tego, jak program się ładuje), ale zwykle możesz utworzyć plik wsadowy w następujący sposób:
@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
Użyłem Notatnika jako przykładu.
Linie
echo Press Ctrl-C if you don't want to restart automatically
ping -n 10 localhost
to tylko opóźnienie (10 sekund), aby dać użytkownikowi szansę przerwania procesu przed jego ponownym uruchomieniem.
Linia
echo Program terminated at %Date% %Time% with Error %ErrorLevel% >> c:\logs\program.log
nie jest potrzebne, ale loguje się przy każdym zamknięciu programu do pliku, więc może być przydatne zdiagnozowanie problemu Błąd ErrorLevel może niewiele powiedzieć, ale program powinien zwrócić 0, jeśli zamknął się normalnie, a wartość non -zerowa wiadomość, jeśli nie ma
Uwaga: wspominasz, że program nic nie robi, jeśli jest już uruchomiony. Zazwyczaj oznacza to, że aplikacja się uruchamia, wykrywa, że kolejna kopia już działa i natychmiast się wyłącza. Jeśli tak jest, a program uruchomi się przed uruchomieniem tego pliku wsadowego, wówczas partia zapętli się i spróbuje uruchomić program co dziesięć sekund.