#batch-file
#пакетный файл
Вопрос:
Я довольно новичок в кодировании и пакетных файлах, так что будьте со мной откровенны.
Программа, которую я хочу запустить таким образом, — это opera. Но пакетный файл, похоже, не находит его. Вот как далеко я продвинулся:
tasklist /FI "opera.exe" 2gt;NUL | find /I /N "opera.exe"gt;NUL if NOT "%ERRORLEVEL%" == "0" start "" "C:UsersleonvAppDataLocalProgramsOpera.exe" PAUSE
Ответ №1:
Я бы проверил проверку, просто немного дальше. Я бы посмотрел ImageName
, возвращается ли значение Opera.exe
, с помощью Status
которого Running
и для текущего UserName
:
@%SystemRoot%System32tasklist.exe /Fi "Status Eq Running" /Fi "ImageName Eq Opera.exe" /Fi "UserName Eq %UserDomain%%UserName%" | %SystemRoot%System32find.exe "=" @If ErrorLevel 1 Start "" /Min "%LocalAppData%ProgramsOpera.exe"
Ответ №2:
Вам нужно указать IMAGENAME eq processname
, как:
tasklist /fi "IMAGENAME eq opera.exe"
Кроме того, нет необходимости запускать if
операторы, вы можете использовать условные операторы amp;amp;
и ||
(tasklist /fi "IMAGENAME eq opera.exe"| findstr /I "opera.exe")gt;nul amp;amp; echo It's running || start "" "%LocalAppData%ProgramsOpera.exe"
и запускать его в цикле, проверяя каждые N секунд:
@echo of :loop (tasklist /fi "IMAGENAME eq opera.exe"| findstr /I "opera.exe")gt;nul amp;amp; echo It's running || start "" "%LocalAppData%ProgramsOpera.exe" timeout /t 20 goto :loop