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

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

Для любителей командной строки в 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, установленные программы в реестре


1 звезда2 звезды3 звезды4 звезды5 звезд (3 оценок, в среднем: 5,00 из 5)

Расскажи всему миру

Ещё похожие заметки:


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

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

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


 
Antonio
Фев 26, 2014 at 10:44

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


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

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


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

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


 
Antonio
Мар 2, 2014 at 21:07

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

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


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

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


 
Antonio
Мар 2, 2014 at 22:35

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


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

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


 
Antonio
Мар 2, 2014 at 23:18

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


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

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


 
Antonio
Авг 24, 2014 at 22:15

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


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

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


 
Antonio
Авг 25, 2014 at 12:36

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


 
ramm
Сен 26, 2014 at 7:49

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


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

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


 
Михаил
Дек 28, 2015 at 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 at 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 at 17:45

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

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


 
Antonio
Апр 15, 2016 at 23:51

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


 

Написать


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