Я создал базовый c BAT-скрипт для загрузки обновлений из вирусной базы Avast, а затем их применения, запустив загруженный файл.
@ECHO OFF
set downloadFolder=C:\Users\myuser\Downloads\Avast_updates
set downloadUrl=https://install.avcdn.net/vps18/vpsupd.exe
bitsadmin /transfer myAvastUpdates /download /priority normal ^
"%downloadUrl%" "%downloadFolder%\vpsupd.exe"
start /min "Update..." "%downloadFolder%\vpsupd.exe"
exit
Кроме того, я создал задачу Windows для запускать BAT каждые x часов.
Все работает правильно, но я хочу знать, есть ли способ автоматически закрыть окно исполняемого файла после завершения процесса обновления.
введите описание изображения здесь
Мне пришло в голову использовать TASKILL
через x секунд, но это не уверяет меня, что процесс обновления завершился за x секунд, иногда это может занять больше времени, а иногда меньше, плюс я не Я не хочу использовать эту команду в установщике безопасности программы.
Тогда мне пришло в голову послать «Enter» через WshShell.SendKeys
:
set SendKeys=CScript //nologo //E:JScript "%~F0"
cls
timeout /t 5 >nul
%SendKeys% "{ENTER}"
@end
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));
Но это не сработало, потому что это окно не закрывается с помощью «Enter» или «ALT F4», оно закрывается, только если мы нажимаем «Готово» или крестик «x», чтобы закрыть окно (если бы это сработало, у него возникла бы проблема с повторной установкой времени ).
Есть ли способ автоматически закрыть это окно после завершения процесса обновления?