mirgue
Goto Top

Software aufliste und deinstallieren

Guten Morgen,

ich möchte über folgendes Script die Software auflisten lassen:


@for /f %%i in ('reg query
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall') do
@(
for /f "tokens=3,* skip=2" %%a in ('reg query %%i /v
DisplayName ^2^>nul') do @(
for /f "tokens=3,* skip=2" %%c in ('reg query %%i /v
DisplayVersion ^2^>nul') do @( echo %%a %%b [%%c %%d] )))


Das klappt auch tadellos. Jetzt möchte ich noch eine Abfrage haben bzw. einfach die Möglichkeit irgendeine der Aufgelisteten Software zu deinstallieren.

Weiß jemand wie es gehst? Schön wäre auch noch die Ausgabe der Software in eine Excel Tabelle.

mfg
mirgue

Content-Key: 82766

Url: https://administrator.de/contentid/82766

Printed on: April 25, 2024 at 19:04 o'clock

Member: Logan000
Logan000 Mar 11, 2008 at 07:44:18 (UTC)
Goto Top
... einfach die Möglichkeit irgendeine der Aufgelisteten
Software zu deinstallieren.
Weiß jemand wie es gehst? Schön
2 Möglichkeiten zur Deinst.
1. Du nimmst psexec und startest damit die deinst. remote auf dem client.
2. Du startest die Deinst. in einen Startskript am client.

Keine Ahnung wie man per Batch daten in Excel packt. Ich würdes das mit VBS machen.
Member: mirgue
mirgue Mar 11, 2008 at 07:56:03 (UTC)
Goto Top
über startskript möchte ich es nicht laufen lassen.

hat jemand ne andere idee?
Member: miniversum
miniversum Mar 11, 2008 at 10:10:21 (UTC)
Goto Top
Ichhabs etwas anders angeordnet. Aber in Excel bekommst du es so:
@echo off
set "excelfile=excel.csv"  
echo Programm;Version>"%excelfile%"  
for /f %%i in ('reg query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall') do (   
for /f "tokens=2* skip=2" %%a in ('reg query "%%i" /v DisplayName ^2^>nul') do (   
for /f "tokens=2* skip=2" %%c in ('reg query "%%i" /v DisplayVersion ^2^>nul') do (   
echo %%b [%%d] 
echo %%b;%%d 1>>"%excelfile%"   
)
)
)
zum Deinstallieren könntest du das dann z.B. so machen das du die Nummer des Programms angibst das deinstalliert werden soll (wenn alle fortlaufend durchnumemriert wären:
set "skiped="  
set /p nr=Welche Software soll deinstalliert werden?:
if %nr% neq 1 set "skiped=skip^=%nr% "  
set "rk="  
for /f "%skiped%tokens=1 delims= " %%i in ('reg query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall') do if not defined rk set rk=%%i   
for /f "tokens=2*" %%c in ('reg query "%rk%" /v UninstallString') do "%%d"  
Member: mirgue
mirgue Mar 11, 2008 at 10:27:56 (UTC)
Goto Top
danke, das mit der csv hat geklappt aber wenn er mich fragt welche Software deinstalliert werden soll was soll ich da eingeben?

den name?
kann ich es über eine nummer steuern lassen? das quasi die aufgelistete Software aufsteigend nummeriert wird und ich dann z.B. die 20 eintippe und das dann die Software die an zwanzigster Stelle steht deinstalliert wird?

mfg
Member: miniversum
miniversum Mar 11, 2008 at 11:02:49 (UTC)
Goto Top
Ja über die Nummer wars auch gedacht.
Die Durchnummerierung muß halt noch eingefügt werden. Das wäre dann ungefär so:
for /f %%i in ('reg query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall') do (  
for /f "tokens=2* skip=2" %%a in ('reg query "%%i" /v DisplayName ^2^>nul') do echo %%b 1>>"%temp%\soft.txt"  
)
(findstr /N /B .* "%temp%\soft.txt")|more  
del "%temp%\soft.txt"  
Member: mirgue
mirgue Mar 11, 2008 at 11:39:56 (UTC)
Goto Top
muss das jetzt alles so aussehen?

@echo off
set "excelfile=ListInstSW.csv"
echo Programm;Version>"%excelfile%"
for /f %%i in ('reg query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall') do (
for /f "tokens=2* skip=2" %%a in ('reg query "%%i" /v DisplayName ^2^>nul') do echo %%b 1>>"%temp%\soft.txt"
)
(findstr /N /B .* "%temp%\soft.txt")|more
del "%temp%\soft.txt" do (
for /f "tokens=2* skip=2" %%c in ('reg query "%%i" /v DisplayVersion ^2^>nul') do (
echo %%b [%%d]
echo %%b;%%d 1>>"%excelfile%"
)
)
)
set "skiped="
set /p nr=Welche Software soll deinstalliert werden?:
if %nr% neq 1 set "skiped=skip^=%nr% "
set "rk="
for /f "%skiped%tokens=1 delims= " %%i in ('reg query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall') do if not defined rk set rk=%%i
for /f "tokens=2*" %%c in ('reg query "%rk%" /v UninstallString') do "%%d"
Member: miniversum
miniversum Mar 11, 2008 at 12:16:28 (UTC)
Goto Top
Nein. Ist irgentwie durcheinander. In einzelnen Blöcken siet das so aus:
@echo off

REM Exceldatei wird erstellt
set "excelfile=ListInstSW.csv"  
echo Programm;Version>"%excelfile%"  
for /f %%i in ('reg query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall') do (   
for /f "tokens=2* skip=2" %%a in ('reg query "%%i" /v DisplayName ^2^>nul') do (   
for /f "tokens=2* skip=2" %%c in ('reg query "%%i" /v DisplayVersion ^2^>nul') do (   
echo %%b [%%d] 
echo %%b;%%d 1>>"%excelfile%"   
)
)
)



REM Temponäre Liste für Deinstallation wird erstellt und angezeigt
for /f %%i in ('reg query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall') do (  
for /f "tokens=2* skip=2" %%a in ('reg query "%%i" /v DisplayName ^2^>nul') do echo %%b 1>>"%temp%\soft.txt"  
)
(findstr /N /B .* "%temp%\soft.txt")|more  
del "%temp%\soft.txt"  

REM Abfrage welche Software deinstalliert werden soll
set "skiped="  
set /p nr=Welche Software soll deinstalliert werden?:
if %nr% neq 1 set "skiped=skip^=%nr% "  
set "rk="  
for /f "%skiped%tokens=1 delims= " %%i in ('reg query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall') do if not defined rk set rk=%%i   
for /f "tokens=2*" %%c in ('reg query "%rk%" /v UninstallString') do "%%d"  

Oder etwas verkürze, aber nicht ganz so unterteilt:
@echo off

REM Exceldatei und Temponäre Liste für Deinstallation wird erstellt
set "excelfile=ListInstSW.csv"  
echo Programm;Version>"%excelfile%"  
for /f %%i in ('reg query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall') do (   
for /f "tokens=2* skip=2" %%a in ('reg query "%%i" /v DisplayName ^2^>nul') do (   
for /f "tokens=2* skip=2" %%c in ('reg query "%%i" /v DisplayVersion ^2^>nul') do (   
echo %%b [%%d] 
echo %%b;%%d 1>>"%excelfile%"   
echo %%b 1>>"%temp%\soft.txt"  
)
)
)

REM Anzeige der Temponären Liste für die Deinstallation
(findstr /N /B .* "%temp%\soft.txt")|more  
del "%temp%\soft.txt"  

REM Abfrage welche Software deinstalliert werden soll
set "skiped="  
set /p nr=Welche Software soll deinstalliert werden?:
if %nr% neq 1 set "skiped=skip^=%nr% "  
set "rk="  
for /f "%skiped%tokens=1 delims= " %%i in ('reg query HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall') do if not defined rk set rk=%%i   
for /f "tokens=2*" %%c in ('reg query "%rk%" /v UninstallString') do "%%d"  
Member: mirgue
mirgue Mar 17, 2008 at 07:15:57 (UTC)
Goto Top
das deinstallieren klappt aber noch nicht!
Member: miniversum
miniversum Mar 17, 2008 at 12:53:18 (UTC)
Goto Top
Ändere mal die Letzte Zeile von:
for /f "tokens=2*" %%c in ('reg query "%rk%" /v UninstallString') do "%%d"
in folgende:
echo "%rk%" ausgewählt
for /f "tokens=2*" %%c in ('reg query "%rk%" /v UninstallString') do ECHO "%%d"
pause
und schau ob dir das richtige Programm zur Deinstallation angezeigt wird.

miniversum
Member: mirgue
mirgue Mar 17, 2008 at 14:29:33 (UTC)
Goto Top
klappt nicht.

Fehlermeldung: "skip^=117 tokens=1 delims="" ist syntaktisch an dieser Stelle nicht verarbeitbat "" ausgewöhlt

Fehler: Ungültiger Schlüsselname
Member: miniversum
miniversum Mar 17, 2008 at 14:40:39 (UTC)
Goto Top
Ah.. ok. war dan ein denkfehler von mir.
Ändere
if %nr% neq 1 set "skiped=skip^=%nr% "
in
set /a nr=%nr%-1
if %nr% gtr 0 set "skiped=skip=%nr% "
Member: mirgue
mirgue Mar 17, 2008 at 14:51:37 (UTC)
Goto Top
"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\KB911564 " ausgewählt

Fehler: Der angegebene Registrierungsschlüssel oder Wert konnte nicht gefunden werden.
Member: miniversum
miniversum Mar 17, 2008 at 15:06:08 (UTC)
Goto Top
Dann gibts für diese Software keinen "UninstallString" Eintrag