9

I have several programs I want to uninstall from my computer (Windows 7 64bit).

Is there a batch\script that can help me do it? or I need to do it one by one from Control Panel?

If there isn't for Windows 7, is there something like this in XP?

thanks, Dor.

Dor Cohen
  • 16,769
  • 23
  • 93
  • 161

5 Answers5

14

There isn't really an uninstall command kind of thing in cmd that I know of. You could however query this reg key

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

(might also need to check HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall if you're on a 64-bit machine)

to find the program you want to uninstall. Each one will have an UninstallString value which will tell you the path to the programs uninstaller file which you can then execute by calling it's full path and filename.

If the uninstaller happens to be an msi you can use

msiexec /uninstall /x to silently uninstall it. This is about as much as you can do with batch I think.

Hope this helps!

Pat
  • 16,515
  • 15
  • 95
  • 114
Bali C
  • 30,582
  • 35
  • 123
  • 152
11

to complement Bali's answer, try the following code...

@echo off
for /f "tokens=*" %%a in ('reg query hklm\software\Microsoft\Windows\CurrentVersion\Uninstall\ ^| find /I "%*"') do (
  for /f "tokens=1,2,*" %%b in ('reg query "%%a" /v UninstallString ^| find /I "UninstallString"') do (
    if /i %%b==UninstallString (
      echo %%d
    )
  )
)

test it carefully. And then remove the echo command.

PA.
  • 28,486
  • 9
  • 71
  • 95
4

I wrote this this morning.

@Echo off
Echo This is a batch file uninstallation program. 
Echo Run as administrator WMIC will not work. 
echo.
Echo The command [wmic product get name] will run.
Echo Looking up all installed programs...
echo. 
wmic product get name

 echo 1. First program
 echo 2. Second program
 echo 3. Third program
 echo 4. Fourth program
 echo 5. Fifth program
echo.
@echo Pick a number: 
echo. 
 choice /c:12345 

 if "%errorlevel%"=="1" wmic product where name="First program" call uninstall
 if "%errorlevel%"=="2" wmic product where name="Second program" call uninstall
 if "%errorlevel%"=="3" wmic product where name="Third program" call uninstall
 if "%errorlevel%"=="4" wmic product where name="Fourth program" call uninstall
 if "%errorlevel%"=="5" wmic product where name="Fifth program" call uninstall

Echo.
Echo.

@echo First method is done. I'll go into the alternate method. 

pause
Echo Get user input - program name?
Echo.
Echo This is an alternate method 
:input
set INPUT=
set /P INPUT=Uninstall which program?: %=%
if "%INPUT%"=="" goto input
echo Your input was: %INPUT%

echo.
echo.
Echo Uninstalling... 

echo The command [wmic product where name="%INPUT%" call uninstall] will run. 


wmic product where name="%INPUT%" call uninstall

@echo If there is "no instance" errors, then the program %INPUT% was uninstalled.

pause
George Gill
  • 43
  • 1
  • 6
  • While I would prefer the `wmic` solution, it seem that for me most applications installed is not in the `wmic product get name` list. They are however listed in the `Uninstall` key in registry. I guess in my situation I need to go for the other suggested solution where you have to parse the registry yourself. – Qben Sep 28 '12 at 07:55
  • 2
    the wmic line was really all I needed. Add /nointeractive to skip all questions asked during the process. – Christian Jun 25 '13 at 12:04
3

Use wmic right from the terminal. You can look at microsoft's documentation to see more usages.

This will be a great starting point:

wmic product where vendor="Autodesk" call uninstall

I use the above line to clean uninstall autodesk products.

  • It might be interesting to know that you can also use wildcards for such queries if you get the syntax right: `wmic product where "name like '%SQL Server%'" call uninstall` Will do that for all products with names containing the string "SQL Server". It is probably a good idea to first check what's affected using something like `wmic product where "name like '%SQL Server%'" list brief` – Nick Nougat Nov 14 '17 at 09:56
0

if you don't need it to be (command line) batch, then BCUninstaller is great to remove and cleanup many sotfwater at once in Windows : https://sourceforge.net/projects/bulk-crap-uninstaller/

Berteh
  • 73
  • 8