Запретить или закрыть всплывающее окно Windows после Taskkill - PullRequest
0 голосов
/ 29 января 2019

Я использую script.bat в Windows 10, чтобы убить Chrome и перезапустить его позже.Иногда появляется всплывающее сообщение об ошибке: «Application.exe» не удалось завершить.Ошибка в действии 7: не удалось завершить процесс 'chrome'.Application.exe работает от имени администратора.Если я нажму OK, все будет хорошо, но если я не перезапущу, Chrome не продолжит работу.Есть ли способ использовать скрипт, чтобы закрыть или предотвратить всплывающую ошибку?

Я попробовал следующие фрагменты кода:

Первый не предотвращает появление ошибки.

taskkill /IM application.exe /T /F 2> nul
taskkill /IM chrome.exe /T /F 2> nul
start "" /wait C:\a\b\c\application.exe
start chrome --incognito --kiosk http://localhost:8000

Второй не запускает Chrome.

taskkill /IM chrome.exe /T /F 2> nul
tasklist /FI "IMAGENAME eq application.exe" | findstr /I /C:"application.exe"
IF ERRORLEVEL 1
start chrome --incognito --kiosk http://localhost:8000

1 Ответ

0 голосов
/ 30 января 2019

Следующий скрипт .bat должен выполнить задачу.

@echo OFF
set "_app=application.exe"
:CheckApp
tasklist /FI "IMAGENAME eq %_app%" | findstr /I /C:"%_app%" >NUL
IF ERRORLEVEL 1 (
    REM Application.exe has finished and you can kill chrome.exe safely
    REM without `/F` switch, `taskkill` merely sends termination signal;
    REM `/F` specifies to forcefully terminate specified process(es).
    taskkill /IM chrome.exe /T /F 2> nul
    REM labels are not allowed inside a parenthesized code block;
    REM                                  hence, call a procedure 
    CALL :RestartChrome
) else (
    REM `Application` is running; go back to `:CheckApp` test after some delay
    timeout /T 1 /NOBREAK >NUL 2>&1
    GOTO :CheckApp
)
REM script continues here after `chrome` restart
GOTO :eof

:RestartChrome
REM check if `chrome.exe` is still running
tasklist /FI "IMAGENAME eq chrome.exe" | findstr /I /C:"chrome.exe" >NUL
IF ERRORLEVEL 1 (
    REM `chrome.exe` has finished and you can restart it safely
    start "" chrome --incognito --kiosk http://localhost:8000
) else (
    REM `chrome.exe` is running
    REM wait here for some time period to finish `chrome` completely
    timeout /T 1 /NOBREAK >NUL 2>&1
    REM go back to `:RestartChrome` test after (above specified) delay
    GOTO :RestartChrome
)
GOTO :eof

Комментарии REM в приведенном выше коде должны объясняться достаточно (с учетом предыдущих обсуждений).Для получения дополнительной информации см. обязательное чтение : A-Z Индекс командной строки Windows CMD

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...