Вывод списка установленных программ консоль cmd Windows

Раздел: Windows
Написано: 25.02.2014
Автор: Antonio

Для любителей командной строки в Windows есть тоже некоторые фишки, которые интересно знать.

Если вы хотите узнать какие программы установлены на компьютере — это можно сделать используя скрипт, запустив его из консоли системы.

скрипт вывода установленных программ

В Linux, например в Debian список установленных пакетов вывести просто — достаточно одной команды:

dpkg --get-selections "*"

В FreeBSD список программ вывести еще проще:

pkg_info

В Виндовс список установленных приложений обычно смотрят тут — Панель управления -> Программы и компоненты (для Windows 7)

Или же можно использовать скрипт человека под ником mozers. Данный скрипт читает нужную ветвь реестра в которой содержится информация о установленных программах и выводит их названия.

Рассмотрим сам скрипт

@ECHO OFF
TYPE nul > list.txt
:: Вывод списка установленных программ
CHCP 1251 > nul
SET UNISTALL=HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
FOR /f "tokens=7 delims=\" %%a IN ('reg query "%UNISTALL%"') DO (
        FOR /f "tokens=1,2,*" %%b IN ('reg query "%UNISTALL%\%%a" ^| FIND /I "DisplayName"') DO (
                ECHO %%d >> list.txt
        )
)

Я доработал создание файла list.txt в текущей директории и добавление названий программ в файл. Содержимое файла получается в кодировке Windows 1251.

Фразы: список программ Windows в консоли, программы в cmd, установленные программы в реестре

Поделиться с друзьями или в соц.сетях (спасибо)
Ещё похожие заметки:

19 комментариев

Сергей
Фев 26, 2014 07:51

Спасибо,все прекрасно работает.

 
Antonio
Фев 26, 2014 10:44

Это замечательно :-)

 
Сергей
Мар 2, 2014 20:38

Здравствуйте Антонио.На вас вся надежда) В общем ситуация такая.Моей сестре подруга присылает свои фото в sfx архиве с bat файлом.Когда архив распаковывается батник проверяет есть ли одинаковые фото или нет(копируются фото только которых нет).Все работает отлично,но сестра хочет чтобы после распаковки архива он еще и сам удалялся.Как прописать в батнике путь к архиву на удаление,ведь архив бывает запускается и с флешки и с D:\\ и с E:\\ из разных мест.В интернете ответа не нашел( Если это можно напишите пожалуйста эту строчку на самоудаление архива.Спасибо.

 
Сергей
Мар 2, 2014 21:02

Антонио,ваш блог мне и помог =) http://nemcd.com/2014/02/tekushhaya-papka-peremennaya-cmd-windows/ нужна была переменная %cd% .Спасибо за ваш блог!

 
Antonio
Мар 2, 2014 21:07

Классно =)
еще бы содержимое этого батника, чтобы понимать как там устроено
а так команда стандартная

del /Q имя файла
абсолютный путь особо не нужен

 
Сергей
Мар 2, 2014 21:19

Подруга пришлет sfx,извлеку батник и выложу код.А вообще по памяти он устроен на if not… и if exist командах.Тоесть он проверяет есть фото или нет и вследствии из этого копирует или пропускает.

 
Antonio
Мар 2, 2014 22:35

Мне просто интересно фигурирует ли имя архива в скрипте, и второе пишут что архив сам себя не может удалить, есть архиваторы с командой удаления файлов и потом удаления себя, когда контейнер становится пустой.

 
Сергей
Мар 2, 2014 22:35

Антонио,что то я не пойму.SFX не удаляется.
@echo off
start notepad
del /q %cd%\1.exe это архив
del %0 это самоудаление батника
написал просто поэкспериментировать.
Архив не удаляется,что бы это значило?

 
Antonio
Мар 2, 2014 23:18

/Q — q большое нужно
да и %cd% не нужно, так как будет искать в текущей папке по-идее

 
Филипп
Авг 20, 2014 10:44

Ваш скрипт достает только те программы, которые установлены через msi. Вопрос, как достать те, которые установлены НЕ через msi?

 
Antonio
Авг 24, 2014 22:15

У меня визуально вытаскивает практически все программы которые есть в Установке и удалении из Программы и компоненты, единственно что заметил не выводится Bitcoin, т.е. он установлен, а в списке в файле нету. Тут похоже какая-то особенность установки.

 
Филипп
Авг 25, 2014 12:27

Смысл в том, что прога вытаскивала все программы. «Черные» (типа биткоины, торренты, игры) не высвечиваются, а «белые», которые вприципе не особо вредны, а, соотвественно, нам не очень нужны

 
Antonio
Авг 25, 2014 12:36

Это понятно, вам в для такого нужна какая-то программа, которая будет проводить анализ содержимого дисков. А этот скрипт просто выводит информацию из раздела реестра, но как правило этого достаточно.

 
ramm
Сен 26, 2014 07:49

Хорошая вещь, спасибо, но хотелось бы еще знать, как вывести список установленных программ по сети. Спасибо.

 
Михаил
Дек 28, 2015 09:20

Перед запуском цикла необходимо добавить инструкцию
Setlocal EnableDelayedExpansion
что изменит логику работы цикла (см. справочник cmd) — не будет зависеть от скорости компьютера — и приведёт к печати полного списка программ установленных через Windows Installer.

 
Михаил
Дек 28, 2015 14:32

А если Вам нужен не весь список программ, а, например, установить программу с известным именем, если её ещё нет в списке, то можно это сделать намного проще и значительно быстрее:

:: Запуск указанного *.exe-шника, только если в списке установленных программ не найдена указанная программа
@CHCP 1251
echo Поиск программы, ожидайте…
@ECHO OFF
if [%2]==[] (
echo «Insufficient command line arguments. Use command that way: %0 »
pause
exit /B
)
SetLocal EnableExtensions
SET UNISTALL=HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
SET foundProgramString=
foundProgramString=reg query HKLM\Software\Microsoft /s /v DisplayName | find %2
:: Устанавливаем указанную программу только, если она ещё не установлена
if foundProgramString==» (
%1
)

Для вывода списка соот-но достаточно reg query HKLM\Software\Microsoft /s /v DisplayName, только результаты будут иметь вид:
DisplayName REG_SZ FastReport Viewer
Но думаю обрезать такие строки — дело техники.

 
Михаил
Дек 29, 2015 11:17

Каюсь, в прошлый раз отправил не проверенную версию, вот отлаженный скрипт для 32-битных версий Windows:
:: Запуск указанного *.exe-шника, только если в списке установленных программ не найдена указанная программа
@echo off
CHCP 1251
SetLocal
if [%2]==[] (
echo «Insufficient command line arguments. Right command using: %0 []»
pause
exit /B 0
)
@echo Поиск программы %1, ожидайте…
@ECHO OFF
SET UNISTALL=HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall
rem извращаемся, чтобы поместить в переменную результат выполнения команды (через предварительную
rem запись во временный файл)
set fName=%random%.tmp
reg query %UNISTALL% /s /v DisplayName | find /i %1 > «%temp%\%fName%»
set /p foundProgramString=<"%temp%\%fName%"
:: Устанавливаем указанную программу только, если она ещё не установлена
if "%foundProgramString%"=="" (
%2 %3
echo Программа %1 успешно установлена!
) else (
echo Программа %1 уже установлена, действия не требуются.
)
del "%temp%\%fName%"
@EndLocal

 
Александр
Апр 14, 2016 17:45

Нет такой кодовой страницы 1251 — допустимые аргументы трёхзначные, я использую 866.

Win7 32 бита. %) ЧЯДНТ?

 
Antonio
Апр 15, 2016 23:51

Windows 7 64 bit
C:\Users\Antonio>CHCP 1251
Текущая кодовая страница: 1251

 

Написать

Копирование информации с сайта возможно только с указанием прямой ссылки - https://nemcd.com