Как написать bat для перезапуск приложения?

Рейтинг: 0Ответов: 2Опубликовано: 28.02.2023

Подскажите скрипт для bat файла, на перезапуск приложения

Должен проверить приложение sync.exe, если работает, то завершает его и запускает по новой, если не работает (процесс вовсе отсутствует), то просто запускает.

Ответы

▲ 0

Как-то так:

taskkill /im sync.exe & timeout 1 & start "" "sync.exe"

Но может потребоваться флаг принудительного завершения:

taskkill /f /im sync.exe & timeout 1 & start "" "sync.exe"

PS: На запущенность не проверяю потому что одинарный амперсанд игнорирует ошибку.

PPS: timeout 2 можно заменить на ping -n 2 127.0.0.1 (с единицей не работает).

▲ 0

Приведу пример на основе калькулятора (WIN10) управление потоком исполнения происходит спомощью конструкции if-else а так же комманды goto с указанием метки для перехода (что-то типа аналога функций) каждая комманда которая предваряется @ не будет выводиться на экран

В данном случае название процесса и программы для запуска немного отличаются, поэтому пришлось захардкодить calc.exe в start_app. А в первой строке set app=Calculator.exe я задал имя процесса.

Если в %ERRORLEVEL% будет не 0 то значит произошла ошибка и процесс не был найден среди запущенных.

set app=Calculator.exe

@tasklist /fi "ImageName eq %app%" /fo csv 2>NUL | find /I "%app%">NUL
@if "%ERRORLEVEL%"=="0" (goto restart_app) else (goto start_app)

:restart_app
@taskkill /f /im "%app%"
@timeout /t 1 /nobreak
@goto start_app

:start_app 
@start "" "calc.exe"
@goto exit

:exit

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

@tasklist /fi "ImageName eq %1" /fo csv 2>NUL | find /I "%1">NUL
@if "%ERRORLEVEL%"=="0" (goto restart_app) else (goto start_app)

:restart_app
@taskkill /f /im "%1"
@timeout /t 1 /nobreak
@goto start_app

:start_app 
@start "" "%1"
@goto exit

:exit

Использовать его очень просто, можно дать подходящее имя скрипту (restarter.bat) и поместить в папку System32 или любой путь где система найдет. При запуске вторым параметром указываем программу например: restarter notepad.exe