1

Создание отдельного приложения для киоска, который должен быть запущен и работать 24 7.

В редких случаях даже при сбое приложения мне нужен какой-то способ сделать автоматический перезапуск. Я использую Windows 10 на Nuc.

Могут ли эксперты по Windows предложить лучший способ добиться этого?

1 ответ1

2

Одним из решений является использование командного файла с бесконечным циклом for для автоматического перезапуска приложения, если оно закрывается. Здесь есть две возможности, в зависимости от того, как разработано приложение.

Если приложение запускается и выполняется в том же процессе, вы можете использовать очень простой командный файл:

@echo off
:Start
C:\path\to\application.exe
:: Wait 30 seconds before restarting.
TIMEOUT /T 30
GOTO:Start

Это будет работать бесконечно. Каждый раз, когда application.exe закрывается или падает, пакетный файл перезапустит его.

Это не будет работать, если application.exe запускает subapp.exe а затем application.exe закрывается. В этом случае вам нужно что-то более сложное.

@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

Если ваше приложение может иметь различные процессы, то вы, вероятно, можете использовать что-то вроде FINDSTR /i "subapp.exe application.exe" вместо FIND /i "subapp.exe" , но это не будет работать для процессов с пробелами в их имени. как FINDSTR использует пространство в качестве разделителя.

Чтобы остановить эти командные файлы после их запуска, оставьте приложение открытым и переключитесь в командную строку. Затем используйте Ctrl + C и подтвердите, что хотите завершить скрипт. После завершения сценария закройте приложение.

Дальнейшее чтение:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .