h41msh1c0r

Registry Werte Ordner lesen bringt Syntaxfehler

Hi,

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

1
2
3
4
5
6
7
8
9
10
11
12
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ß
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 183661

Url: https://administrator.de/forum/registry-werte-ordner-lesen-bringt-syntaxfehler-183661.html

Ausgedruckt am: 26.04.2025 um 18:04 Uhr

Skyemugen
Skyemugen 17.04.2012 um 16:09:51 Uhr
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?
H41mSh1C0R
H41mSh1C0R 17.04.2012 um 16:20:47 Uhr
Goto Top
hmmmm

hat sich erledigt.

1
2
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ß
106009
106009 17.04.2012 um 16:35:11 Uhr
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
1
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ß
Skyemugen
Skyemugen 17.04.2012 um 16:35:26 Uhr
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
H41mSh1C0R
H41mSh1C0R 17.04.2012 um 17:42:39 Uhr
Goto Top
^^ ich schau mir das morgen an, der Kopf ist nach 11h einfach zu, schonmal danke euch beiden ich schau morgen wieder vorbei. =)