Eine Lösung ist die Verwendung einer Batchdatei mit einer for
Endlosschleife, um die Anwendung automatisch neu zu starten, wenn sie geschlossen wird. Hier gibt es zwei Möglichkeiten, je nachdem, wie die Anwendung gestaltet ist.
Wenn die Anwendung gestartet wird und in demselben Prozess ausgeführt wird, können Sie eine sehr einfache Batchdatei verwenden:
@echo off :Start C:\path\to\application.exe :: Wait 30 seconds before restarting. TIMEOUT /T 30 GOTO:Start
Das wird unendlich laufen. Jedes Mal, wenn application.exe
geschlossen wird oder abstürzt, wird die Batchdatei neu gestartet.
Dies funktioniert nicht, wenn application.exe
gestartet subapp.exe
und dann application.exe
geschlossen wird. In diesem Fall benötigen Sie etwas Komplizierteres.
@ECHO off SET _PollingInterval=30 :BatchStart C:\path\to\application.exe :Start :: Uncomment the following line on versions of Windows prior to Windows 7 and comment out the TIMEOUT line. The PING solution will not be 100% accurate with _PolingInterval. :: PING 127.0.0.1 -n %_PollingInterval% >nul TIMEOUT /T %_PollingInterval% SET PID= FOR /F "tokens=2 delims= " %%i IN ('TASKLIST ^| FIND /i "subapp.exe"') DO SET PID=%%i IF [%PID%]==[] ( ECHO Application was not running. Restarting script. GOTO BatchStart ) GOTO Start GOTO:EOF
Wenn Ihre Anwendung verschiedene Prozesse haben könnte, können Sie wahrscheinlich etwas ähnliches FINDSTR /i "subapp.exe application.exe"
anstelle von verwenden FIND /i "subapp.exe"
. Dies würde jedoch nicht für Prozesse mit Leerzeichen in ihrem Namen funktionieren, da FINDSTR
das Leerzeichen als Deliminator verwendet wird.
Um diese Batch-Dateien nach dem Start zu stoppen, lassen Sie die Anwendung geöffnet und wechseln Sie zur Eingabeaufforderung. Verwenden Sie dann Ctrl+ Cund bestätigen Sie, dass Sie das Skript beenden möchten. Wenn das Skript beendet ist, schließen Sie die Anwendung.
Lesen Sie weiter:
- Timeout - Fügen Sie eine Verzögerung hinzu, auch Erwähnungen
PING
- Suchen - Nach Text suchen
- FindStr - Suche nach Text (komplexer als
FIND
) - Jobliste - Zeigt alle laufenden Anwendungen und Dienste an
- Escape-Zeichen, Trennzeichen und Anführungszeichen - Das
^
Zeichen in der for-Schleife ist ein Escape-Zeichen