Я запускаю программу из Batch, но если она уже запущена, я хочу не запускать второй экземпляр.
До сих пор я создал следующий код, который работает:
TASKLIST /FI "IMAGENAME eq speedfan.exe" | FIND "speedfan.exe" >NUL
IF %ERRORLEVEL%==0 (
TASKKILL /F /IM speedfan.exe
)
START "" "C:\Program Files (x86)\SpeedFan\speedfan.exe"
В качестве альтернативы, если я хочу сохранить текущий экземпляр вместо запуска нового:
TASKLIST /FI "IMAGENAME eq speedfan.exe" | FIND "speedfan.exe" >NUL
IF NOT %ERRORLEVEL%==0 (
START "" "C:\Program Files (x86)\SpeedFan\speedfan.exe"
)
Можно ли это улучшить / упростить?
Обновление: Спасибо всем за ваши комментарии! Пока что мой пересмотренный код становится:
TASKLIST /FI "IMAGENAME eq speedfan.exe" | FINDSTR /BLI "speedfan.exe " >NUL || (
START "" "C:\Program Files (x86)\SpeedFan\speedfan.exe"
)
(и, возможно, я упущу часть /FI "IMAGENAME eq speedfan.exe"
ради простоты)