PDA

Visualizza la versione completa : [BATCH] Disinstallare programmi in Windows


ck_
27-02-2010, 21:34
Salve a tutti!

Per motivi lavorativi (mi renderebbe lavorare molto + veloce) avrei bisogno di uno scriptino .bat che mi permetterebbe di disinstallare tutte le versioni di office presenti nel pc.

Dopo aver guardato un pò in giro sono giunto alla conclusione che calcolare tutte le possibili combinazioni di versione di office installate sul pc sia veramente un lavoraccio.
Perciò pensavo di utilizzare il comando wmic che rende le cose molto semplici.

wmic product get name #restituisce tutti i programmi installati sulla macchina
wmic product where name="Microsoft ecc ecc" call uninstall #Fa partire in automatico l'uninstaller del programma

il mio problema è che il nome da mettere deve essere presente per forza nel registro di windows in maniera completa... vorrei poter mettere solo un nome (che sò office )per far partire l'uninstaller di office qualunque sia la sua versione ma non sò gestire le variabili...

Grazie anticipatamente!

Spero possiate aiutarmi.

ck_
28-02-2010, 13:59
up

MItaly
28-02-2010, 14:23
Forse per questo scopo sarebbe più adeguato VBScript.

ck_
03-03-2010, 17:16
Mi puoi dare qualche dritta... sono disposto ad imparare...

ck_
05-03-2010, 01:48
Cerco un punto da cui iniziare please... calcolate che un pò ho programmato...

MItaly
05-03-2010, 08:51
Ti dovresti studiare la documentazione di WMI per VBScript, e VBScript in generale.

Dheed
05-03-2010, 21:36
Se intendi microsoft office(word ecc) e eliminare solo gli eseguibili e i vari file,basterebbe fare(credo):



@echo off
del "C:\Program Files\Microsoft Office\*.*"
rd "C:\Program Files\Microsoft Office\*.*"
pause


Soluzione brutale con la quale non ti assicuro niente,meglio chiedere a qualcuno di più esperto per conferma...

kirakira93
05-03-2010, 22:23
In questo caso non vengono eliminate le chiavi di registro.... brutta cosa.... bisogneberre avviare l'unistaller..... con il linguaggio c++ potresti da un occhio alla API ShellExecute

HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);


API da msdn (http://msdn.microsoft.com/en-us/library/bb762153%28VS.85%29.aspx)

Esempio:



ShellExecute(NULL, "open", "C:\\Program Files\\Office\\unistall.exe", NULL, NULL, 1);
//Il percorso è da aggiustare

MItaly
05-03-2010, 23:09
Entrambe soluzioni da evitare; la prima non sto neanche a spiegare perché :dottò: ; la seconda non va bene perché la linea di comando con cui lanciare l'uninstaller va recuperata dall'apposita chiave di registro.
L'idea di base di ck_, usare WMI, è ottima, dato che esso fornisce tutti gli strumenti per gestire questo genere di problematiche senza fare errori grossolani di questo genere; il problema è che usarlo da file batch non consente la flessibilità necessaria per la sua richiesta, per questo gli consigliavo di provare con VBScript (che peraltro è uno dei linguaggi da cui WMI si usa più comodamente).

ck_
06-03-2010, 01:14
Perfetto... Penso proprio che allora mi studierò il VBScript...

Loading