h41msh1c0r
Goto Top

Registry Werte Ordner lesen bringt Syntaxfehler

Hi,

ich stell mich echt wieder irgendwie zu grün an.

SET PackageName=Oracle_Java.Runtime.Environment_Version
SET SourceDir=%~dp0

: Logdatei
SET LogDir=%Public%\Logs
SET LogPraefix=msiUninst
SET LogFile=%LogDir%\%LogPraefix%_%PackageName%

Set "regkey_x86=HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432\MICROSOFT\WINDOWS\CURRENTVERSION\UNINSTALL"  

for /f %i in ('reg query "%regkey_x86%" /s ^|find "{26A24AE4-039D-4CA4-87B4-2F83216030FF}"') do  
msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216030FF} REBOOT=ReallySuppress /L*v "%LogFile%_JRE1.6U29.log"  

Ist der Gedankengang falsch so nach einem Eintrag zu suchen? Im Grunde ist es ja ein "Ordner" und kein Key selber.
Nicht über die Sets über regkey_x86 wundern die sind so vorgegeben.

Gruß

Content-Key: 183661

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

Printed on: April 26, 2024 at 13:04 o'clock

Member: Skyemugen
Skyemugen Apr 17, 2012 at 14:09:51 (UTC)
Goto Top
Aloha,

ähm ... also a) würde ich es ja mal mit mehr Prozent versuchen, entweder Wodka oder %%i und b) würde ich den Befehl ja nicht in eine neue Zeile setzen aber das sind jetzt auch nur so Gedanken ...

greetz André

P.S.: Wozu lässt du finden, wenn du mit %%i nicht weiterarbeitest?
Member: H41mSh1C0R
H41mSh1C0R Apr 17, 2012 at 14:20:47 (UTC)
Goto Top
hmmmm

hat sich erledigt.

Reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall /v {26A24AE4-039D-4CA4-87B4-2F83216030FF} 1>nul 2>nul
if errorlevel=0 start /wait MsiExec.exe /qn /x {26A24AE4-039D-4CA4-87B4-2F83216030FF}

Wenn ich nun auf mehrere Versionen prüfen soll, ginge das via Schleife? Array's sind ja schwierig abzubilden(bzw. nicht vorgesehen in Batch) besonders wenn man Parameter zusammen bauen will.

gruß
Mitglied: 106009
106009 Apr 17, 2012 at 14:35:11 (UTC)
Goto Top
Hi,

errorlevel 0 ist immer wahr, deshalb wird der Befehl auch ausgeführt, wenn der tatsächliche Errorlevel höher ist. Wenn du richtig prüfen willst, verwende
if [%errorlevel%] equ  ....
oder setze den Befehl mit && ohne die if-Abfrage direkt hinter den Kram in Zeile 1

Wenn msiexec der letzte Befehl in der Batch ist, der ausgeführt werden soll, kannst du auf das "start /wait" gut verzichten. Die Batch-Datei wird dann sowieso erst beendet, wenn der Install-Prozess abgelaufen ist.

Nur am Rande: In der Registry gibt es nur Schlüssel, Werte und Daten, keine Ordner. face-wink

Gruß
Member: Skyemugen
Skyemugen Apr 17, 2012 at 14:35:26 (UTC)
Goto Top
Aloha,

sicher, wenn du statt find dann findstr nimmst, kannst du gerne per ^|findstr "{WERT1} {WERT2} {WERT3}" in deiner urspr. Schleife arbeiten, oder auch andersherum per

for %%i in ({WERT1} {WERT2} {WERT3}) do Reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall /v %%i && start /wait MsiExec.exe /qn /x %%i

greetz André

P.S.: if errorlevel=0 ... a) wird das nix und b) gefällt dir && nicht? face-wink
Member: H41mSh1C0R
H41mSh1C0R Apr 17, 2012 at 15:42:39 (UTC)
Goto Top
^^ ich schau mir das morgen an, der Kopf ist nach 11h einfach zu, schonmal danke euch beiden ich schau morgen wieder vorbei. =)