1

Тема: Як видалити програму за допомогою bat, знаючи лише її повну назву?

Доброго дня, ночі, вечора, ранку.
Мені необхідно зробити програмку, яка є аналогом видалення програм в панелі управління. Тобто вона повинна видаляти програми, які вказує користувач.
Мої наробітки: перший варіант через wmic

@echo off
color a
echo.
echo ------------------------------WMIC (SYSTEM TOOL) -------------------------------
echo ________________________________________________________________________________
echo.

echo 1)Show only programs name (recomended)
echo 2)Show only programs name and location
echo 3)Show only programs name and description
echo 4)Show only programs name and IdentifyingNumber
echo 5)Show only programs name and InstallDate
echo 6)Show programs name, version, location, SKUNumber, InstallDate
echo.

set /p c="Enter Number ---> "
if %c%==1 wmic product get name 
if %c%==2 wmic product get name, InstallLocation 
if %c%==3 wmic product get name, Description
if %c%==4 wmic product get name, IdentifyingNumber 
if %c%==5 wmic product get name, InstallDate
if %c%==6 wmic product get name, Version, InstallLocation, SKUNumber, InstallDate 

echo.
echo ________________________________________________________________________________
echo.
echo Do you want to delete program?
echo.
echo 1) Yes
echo 2) No and exit
echo.
set /p n="Enter Number ---> "
echo.
echo _______________________________________________________________________________
echo.
if %n%==1 (
echo.
color c
echo Write the name of program to uninstall..
echo.
set /p names="Enter Name ---> "
wmic product where name="%names%" call uninstall /nointeractive 
)
if %n%==2 exit

pause

Тут все прекрасно відображає лист програм, але при їх видаленні постійно видає помилку, що такого інсталятора не знайдено....

Я дуже засумував, а потім спробував видалити ось цим:

set /p n="Program to uninstall -> "
msiexec /uninstall %n%.msi 

Ситуація така сама, знову постійно помилка...
Після цього я мега засумував і зв'явилася наступна ідея

call :get_soft_list hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
call :get_soft_list hklm\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
call :get_soft_list hkcu\Software\Microsoft\Windows\CurrentVersion\Uninstall
goto the_end

:get_soft_list %1
for /F "tokens=1,2,*" %%a in ('reg query "%1" /s') do ^
if "%%a" == "DisplayName" echo %%c
exit /b

:the_end
pause

Код вище. Я проходжуся по реєстру по шляху до uninstall і вибираю потрібну для видалення програму. Але як це зробити за допомогою bat я не додумався....
Не довівши до кінця це, я закинув і спробував наступне:

wmic /output:LocationPrograms.txt product get name, InstallLocation

Таким чином в файлику txt з'являється шлях і назва програми. А потім треба створити програму для читання стрічок і взяти потрібний шлях + назва програми, потім батніком все це видалити.

Але я, думаю, це вже супер збочення, тому хотілось би послухати ваші ідеї, бажано з прикладом.