2012-04-03 6 views
8

Tengo varios programas que deseo desinstalar de mi computadora (Windows 7 64bit).¿Hay Desinstalar un lote de programa para Windows?

¿Hay un script por lotes que pueda ayudarme a hacerlo? o tengo que hacerlo uno por uno desde el Panel de control?

Si no hay para Windows 7, ¿hay algo así en XP?

gracias, Dor.

+1

¿Por qué no ejecutar uninstall.exe para cada programa? –

+0

Puede escribir un archivo por lotes para encontrar los desinstaladores en un directorio que busque. es decir: busca Java y ejecuta uninstall.exe en la carpeta Java. –

+1

Te sugiero que pruebes la respuesta de Bali. Se ve un poco más prometedor. –

Respuesta

12

No hay realmente un tipo de comando uninstall en cmd que yo sepa. sin embargo, puede consultar esta llave del registro

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

(también podía ser necesario para comprobar HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall si estás en una máquina de 64 bits)

para encontrar el programa que desea desinstalar. Cada uno tendrá un valor de UninstallString que le indicará la ruta al archivo de desinstalación de programas que luego puede ejecutar llamando a su ruta completa y nombre de archivo.

Si el desinstalador pasa a ser un msi puede utilizar

msiexec /uninstall /x Para desinstalar silenciosamente ella. Esto es casi todo lo que puedes hacer con el lote, creo.

Espero que esto ayude!

+0

^esta es la mejor manera de hacer lo que está pidiendo desde la línea de comandos. – iesou

9

para complementar la respuesta de Bali, pruebe el siguiente código ...

@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 
    ) 
) 
) 

prueba con cuidado. Y luego elimine el comando echo.

+0

+1 para consultar la clave de registro, no estaba seguro de cómo hacerlo. –

3

Escribí esto esta mañana.

@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 
+0

Aunque preferiría la solución 'wmic', parece que la mayoría de las aplicaciones instaladas no están en la lista' wmic product get name'. Sin embargo, se enumeran en la clave 'Uninstall' en el registro. Supongo que, en mi situación, necesito buscar la otra solución sugerida en la que debe analizar usted mismo el registro. – Qben

+1

la línea wmic realmente era todo lo que necesitaba. Agregue/nointeractivo para omitir todas las preguntas realizadas durante el proceso. – Christian

2

Use wmic directamente desde la terminal. Puede ver la documentación de microsoft para ver más usos.

Este será un gran punto de partida:

wmic product where vendor="Autodesk" call uninstall 

utilizo la línea anterior para limpiar los productos de Autodesk desinstalación.

+0

Puede ser interesante saber que también puede usar comodines para tales consultas si obtiene la sintaxis correcta: 'producto wmic donde" nombre como '% SQL Server%' "call uninstall' Hará eso para todos los productos con nombres que contiene la cadena "SQL Server". Probablemente sea una buena idea comprobar primero qué se ha afectado usando algo como 'producto wmic donde" nombre como '% SQL Server%' "lista breve ' –

Cuestiones relacionadas