- Для создания скрипта WinGet для установки и обновления приложений в Windows 11 используйте пакетный файл со списком идентификаторов приложений.
- Скрипт проверяет, установлено ли каждое приложение. Если нет, он устанавливает его, а если установлено, то проверяет наличие обновлений и устанавливает их.
- Вы можете запустить скрипт вручную, из папки автозагрузки или как запланированное задание.
В Windows 11 можно создать простой скрипт для автоматической загрузки, установки и обновления ваших любимых приложений при каждом запуске системы, и в этом руководстве я покажу вам, как это сделать.
Как человек, много работающий с виртуальными машинами для тестирования приложений, настроек и конфигураций, я постоянно переустанавливаю операционную систему, чтобы обеспечить чистую среду. Одна из самых трудоемких частей этого процесса — ручная переустановка всех необходимых приложений, на которые я полагаюсь каждый день.
Для решения этой проблемы я обратился к диспетчеру пакетов Windows (winget) , инструменту командной строки от Microsoft для управления приложениями. Он быстрый и надежный, но мне хотелось чего-то еще более простого в использовании. Поэтому я создал собственный скрипт, который запускается автоматически при загрузке системы. Он выполняет две задачи:
- Если приложение не установлено, скрипт установит его.
- Если приложение уже установлено, оно проверяет наличие обновлений и устанавливает их, когда они становятся доступны.
В этом руководстве я опишу шаги по созданию и использованию этого скрипта. Независимо от того, являетесь ли вы разработчиком, сетевым администратором или опытным пользователем, стремящимся сэкономить время, этот метод поможет вам оптимизировать развертывание приложений и настройку системы в Windows 11.
Создайте скрипт WinGet для установки и обновления приложений в Windows 11.
Это трехэтапный процесс. Сначала нужно составить список всех приложений, которые вы хотите установить на свой компьютер, затем сгенерировать скрипт и решить, как его запускать.
Составьте список приложений
Чтобы создать список приложений для установки и обновления с помощью WinGet, выполните следующие действия:
-
Откройте меню «Пуск» .
-
Найдите «Командная строка» (или «Терминал»), щелкните правой кнопкой мыши по верхнему результату и выберите пункт « Запустить от имени администратора» .
-
Введите следующую команду, чтобы найти идентификационный номер приложения, и нажмите Enter :
winget search APP-NAME

После выполнения этих шагов команда выведет список приложений, соответствующих запросу. Обычно для поиска приложения используется одно слово. Если в названии есть пробел, используйте кавычки. В противном случае поиск не сработает.
Кроме того, если вы используете кавычки, вы указываете приложению искать точное совпадение, поэтому убедитесь, что запрос составлен правильно. (Это не поисковая система.)
Например, если я хочу найти информацию о WinGet для приложения «VLC», я использую команду winget search vlc.
Повторите шаги и запишите значение ID для каждого приложения, поскольку эта информация понадобится вам для создания пользовательского скрипта.
Создайте скрипт WinGet.
Чтобы создать пакетный файл для установки и обновления приложений, выполните следующие действия:
-
Откройте меню «Пуск» .
-
Найдите приложение «Блокнот» и щелкните по верхнему результату поиска, чтобы открыть его.
-
Скопируйте и вставьте следующий код в текстовый файл:
@echo off setlocal enabledelayedexpansion :: Список идентификаторов приложений set apps= Microsoft.WindowsTerminal.Preview Microsoft.Edge.Dev Microsoft.PowerToys for %%A in (%apps%) do ( echo --------------------------------------- echo Обработка %%A... :: Проверка установки приложения путем захвата вывода списка winget list --id %%A > temp_check.txt 2>&1 findstr /C:"Пакет не найден" temp_check.txt >nul if !errorlevel! equ 0 ( echo %%A не установлен. Установка... winget install --id %%A --silent --accept-source-agreements --accept-package-agreements ) else ( echo %%A установлен. Попытка обновления... winget upgrade --id %%A --silent --accept-source-agreements --accept-package-agreements if !errorlevel! neq 0 ( echo Обновление не удалось для %%A или Нет доступных обновлений. ) ) echo. ) del temp_check.txt >nul 2>&1 endlocal
-
В разделе «set apps=» укажите приложения, которые вы хотите установить и обновить на своем компьютере, разделяя каждое приложение пробелом.
Краткое замечание: в этой строке я привожу три примера, но не забудьте обновить этот раздел, добавив свои варианты.
-
Нажмите на кнопку «Файл» и выберите пункт «Сохранить как» .
-
Выберите место для сохранения файла.
Небольшой совет: если вы используете OneDrive, вы можете загрузить файл в облако, чтобы иметь доступ к скрипту со всех своих компьютеров.
-
Укажите имя для скрипта и используйте расширение файла .bat .

-
Нажмите кнопку «Сохранить» .
После выполнения этих шагов вы можете запустить скрипт вручную, щелкнув правой кнопкой мыши по файлу «.bat» и выбрав опцию «Запустить от имени администратора» , или же создать триггер для автоматического запуска пакетного файла.
Вот подробное описание пакетного скрипта и принципа работы каждой его части:
Первоначальная настройка
@echo offподавляет эхо команд.
setlocal enabledelayedexpansionвключает «отложенное расширение переменных», так что доступ к переменным внутри скобок можно получить в режиме реального времени, используя !VAR!вместо %VAR%.
Определяет список приложений
set apps =Определяет список идентификаторов приложений WinGet для обработки в цикле.
Просмотрите каждое приложение.
for %%A in (%apps%) do ()Для каждого идентификатора ( %%A) в списке приложений прилагаемые команды выполняются последовательно.
Проверьте установку приложения.
winget listВывод записывается в файл, temp_check.txtпоскольку инструмент командной строки не имеет способа проверить, установлено ли приложение уже.
findstrВыполняет поиск в этом файле фразы «Не найдено установленных пакетов». Если пакет найден, значение устанавливается ERRORLEVELв 0 , в противном случае — в 1 .
!errorlevel!помогает получить правильный код ошибки внутри цикла.
Установите или обновите приложение.
- Если приложение не установлено (
errorlevel = 0), запустите winget install.
- Если обновление установлено, запустите команду
winget upgrade, и в случае сбоя ( errorlevel ≠ 0) сообщите, что обновление не удалось или обновление недоступно.
Очистить и завершить скрипт
delУдаляет временный файл.
endlocalВосстанавливает среду, предшествующую скрипту, и прекращает задержку расширения.
Настройте скрипт
У вас есть три варианта запуска пакетного скрипта. Вы можете запустить его вручную, добавить в папку «Автозагрузка», чтобы система запускала его автоматически при каждом входе в вашу учетную запись, или создать запланированное задание с помощью планировщика задач.
Вручную
Если вы хотите запустить скрипт вручную, выполните следующие действия:
-
Щелкните правой кнопкой мыши по файлу “.bat” и выберите пункт «Запустить от имени администратора» .

Вы также можете запустить его непосредственно через командную строку или PowerShell.
Этот вариант идеально подходит для тестирования или эпизодического использования, но каждый раз требует ручного запуска.
Добавить в папку автозагрузки
Чтобы скрипт запускался автоматически из папки «Автозагрузка», выполните следующие действия:
-
Откройте меню «Пуск» .
-
Найдите приложение «Run» и нажмите на первый результат, чтобы открыть его.
-
Введите следующую команду, чтобы открыть папку, и нажмите Enter :
shell:startup

-
Скопируйте и вставьте ярлык для файла .bat в папку.

После выполнения этих шагов скрипт будет запускаться каждый раз при входе в систему.
Этот параметр легко настроить, но он запускается только при входе пользователя в систему, а не при загрузке системы. Кроме того, вам потребуется подтвердить установку каждого приложения, требующего повышения привилегий.
Создайте запланированное задание
Чтобы создать запланированное задание для запуска скрипта Winget, выполните следующие действия:
-
Откройте меню «Пуск» .
-
Найдите «Планировщик задач» и щелкните по верхнему результату, чтобы открыть приложение.
-
(Необязательно) Щелкните правой кнопкой мыши папку «Библиотека планировщика задач» и выберите пункт «Создать папку» .
-
Укажите название для папки — например, «Мои задачи» .
-
Щелкните правой кнопкой мыши папку «Мои задачи» и выберите пункт «Создать задачу» .

-
Перейдите на вкладку «Общие» .
-
В поле «Название» введите описательное название задачи, например, « Мои приложения ».

-
В разделе «Параметры безопасности» выберите параметр «Запускать независимо от того, вошел ли пользователь в систему или нет» .
-
Установите флажок «Запускать с наивысшими привилегиями» .
-
Перейдите на вкладку «Триггеры» .
-
Нажмите кнопку «Создать» .
-
В параметре «Начать задачу» выберите триггер (например, «При входе в систему», «При запуске» или по расписанию, например, ежедневно).

-
При необходимости настройте параметры расписания.
Краткое замечание: для простоты вы можете выбрать опцию «При запуске» .
-
Нажмите кнопку ОК .
-
Перейдите на вкладку «Действия» .
-
Нажмите кнопку «Создать» .
-
В разделе «Действия» выберите параметр « Запустить программу ».
-
В разделе «Программа/скрипт» введите следующую команду:
cmd.exe

-
В поле «Добавить аргументы (необязательно)» введите следующую команду:
/c "C:\path\to\YOUR-SCRIPT.bat"
-
Нажмите кнопку ОК .
-
Перейдите во вкладку «Условия» .
-
В разделе «Питание» снимите флажки с параметров «Останавливать при переключении компьютера на питание от батареи» и «Запускать задачу только при подключении компьютера к сети переменного тока» .
-
Нажмите кнопку ОК .
-
Подтвердите пароль от своей учетной записи.
-
Нажмите кнопку ОК .
После выполнения этих шагов в указанное вами время будет создана точка восстановления системы.