Вывод списка установленных программ консоль cmd Windows
Для любителей командной строки в 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, установленные программы в реестре
Спасибо,все прекрасно работает.
Это замечательно
Здравствуйте Антонио.На вас вся надежда) В общем ситуация такая.Моей сестре подруга присылает свои фото в sfx архиве с bat файлом.Когда архив распаковывается батник проверяет есть ли одинаковые фото или нет(копируются фото только которых нет).Все работает отлично,но сестра хочет чтобы после распаковки архива он еще и сам удалялся.Как прописать в батнике путь к архиву на удаление,ведь архив бывает запускается и с флешки и с D:\\ и с E:\\ из разных мест.В интернете ответа не нашел( Если это можно напишите пожалуйста эту строчку на самоудаление архива.Спасибо.
Антонио,ваш блог мне и помог http://nemcd.com/2014/02/tekushhaya-papka-peremennaya-cmd-windows/ нужна была переменная %cd% .Спасибо за ваш блог!
Классно
еще бы содержимое этого батника, чтобы понимать как там устроено
а так команда стандартная
del /Q имя файла
абсолютный путь особо не нужен
Подруга пришлет sfx,извлеку батник и выложу код.А вообще по памяти он устроен на if not… и if exist командах.Тоесть он проверяет есть фото или нет и вследствии из этого копирует или пропускает.
Мне просто интересно фигурирует ли имя архива в скрипте, и второе пишут что архив сам себя не может удалить, есть архиваторы с командой удаления файлов и потом удаления себя, когда контейнер становится пустой.
Антонио,что то я не пойму.SFX не удаляется.
@echo off
start notepad
del /q %cd%\1.exe это архив
del %0 это самоудаление батника
написал просто поэкспериментировать.
Архив не удаляется,что бы это значило?
/Q — q большое нужно
да и %cd% не нужно, так как будет искать в текущей папке по-идее
Ваш скрипт достает только те программы, которые установлены через msi. Вопрос, как достать те, которые установлены НЕ через msi?
У меня визуально вытаскивает практически все программы которые есть в Установке и удалении из Программы и компоненты, единственно что заметил не выводится Bitcoin, т.е. он установлен, а в списке в файле нету. Тут похоже какая-то особенность установки.
Смысл в том, что прога вытаскивала все программы. «Черные» (типа биткоины, торренты, игры) не высвечиваются, а «белые», которые вприципе не особо вредны, а, соотвественно, нам не очень нужны
Это понятно, вам в для такого нужна какая-то программа, которая будет проводить анализ содержимого дисков. А этот скрипт просто выводит информацию из раздела реестра, но как правило этого достаточно.
Хорошая вещь, спасибо, но хотелось бы еще знать, как вывести список установленных программ по сети. Спасибо.
Перед запуском цикла необходимо добавить инструкцию
Setlocal EnableDelayedExpansion
что изменит логику работы цикла (см. справочник cmd) — не будет зависеть от скорости компьютера — и приведёт к печати полного списка программ установленных через Windows Installer.
А если Вам нужен не весь список программ, а, например, установить программу с известным именем, если её ещё нет в списке, то можно это сделать намного проще и значительно быстрее:
:: Запуск указанного *.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
Но думаю обрезать такие строки — дело техники.
Каюсь, в прошлый раз отправил не проверенную версию, вот отлаженный скрипт для 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
Нет такой кодовой страницы 1251 — допустимые аргументы трёхзначные, я использую 866.
Win7 32 бита. ЧЯДНТ?
Windows 7 64 bit
C:\Users\Antonio>CHCP 1251
Текущая кодовая страница: 1251