Via BAT in Registry unbekannten Key auslesen und Informationen weiter verwerten
Hallo Community,
meine Anforderung ist wie folgt:
In der Windows Registrierung gibt es in HKLM\Software\Microsoft\Windows\CurrentVersion\Testkey\ mehrere, mir unbekannte und von Computer zu Computer verschiedene, Subkeys, z.B.
HKLM\Software\Microsoft\Windows\CurrentVersion\Testkey\123456\Hallo\
HKLM\Software\Microsoft\Windows\CurrentVersion\Testkey\asdfgh\Hallo\
HKLM\Software\Microsoft\Windows\CurrentVersion\Testkey\abcdef\Hallo\
In jedem dieser Subkeys\Hallo\ gibt es einen String (String1) nach dem ich suchen möchte. Wenn der von mir gesetzte String existiert, z.B. HKLM\Software\Microsoft\Windows\CurrentVersion\Testkey\asdfgh\Hallo\ - dann soll bitte weiterhin in diesem Zweig ein weiterer String ausgelesen (String2) werden und die Information daraus via echo ausgegeben werden.
Mein Ansatz bisher:
@echo off
Set Testkey=Version
FOR /f "tokens=*" %%i IN ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey') DO (
reg query "%%i"\Hallo /v String1 | find /i /c "%Testkey%")
Das Auslesen der verfügbaren Keys und das Suchen nach der Zeichenfolge funktioniert, aber wie kann ich jetzt dort, wo der String1 = test ist, einen weiteren String (String2) auslesen?
Vielen Dank für eure Vorschläge und viele Grüße!
meine Anforderung ist wie folgt:
In der Windows Registrierung gibt es in HKLM\Software\Microsoft\Windows\CurrentVersion\Testkey\ mehrere, mir unbekannte und von Computer zu Computer verschiedene, Subkeys, z.B.
HKLM\Software\Microsoft\Windows\CurrentVersion\Testkey\123456\Hallo\
HKLM\Software\Microsoft\Windows\CurrentVersion\Testkey\asdfgh\Hallo\
HKLM\Software\Microsoft\Windows\CurrentVersion\Testkey\abcdef\Hallo\
In jedem dieser Subkeys\Hallo\ gibt es einen String (String1) nach dem ich suchen möchte. Wenn der von mir gesetzte String existiert, z.B. HKLM\Software\Microsoft\Windows\CurrentVersion\Testkey\asdfgh\Hallo\ - dann soll bitte weiterhin in diesem Zweig ein weiterer String ausgelesen (String2) werden und die Information daraus via echo ausgegeben werden.
Mein Ansatz bisher:
@echo off
Set Testkey=Version
FOR /f "tokens=*" %%i IN ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey') DO (
reg query "%%i"\Hallo /v String1 | find /i /c "%Testkey%")
Das Auslesen der verfügbaren Keys und das Suchen nach der Zeichenfolge funktioniert, aber wie kann ich jetzt dort, wo der String1 = test ist, einen weiteren String (String2) auslesen?
Vielen Dank für eure Vorschläge und viele Grüße!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 205077
Url: https://administrator.de/forum/via-bat-in-registry-unbekannten-key-auslesen-und-informationen-weiter-verwerten-205077.html
Ausgedruckt am: 22.04.2025 um 15:04 Uhr
1 Kommentar
Hi mein.wunsch...,
damit sollte es nach deinem Muster gehen:
Die Namen der Werte musst du noch in Zeile 1 und 2 eintragen, den RootKey ab dem du suchen möchtest in Zeile 3 und den Keynamen der jeweils in den Subkeys existieren soll in Zeile 4.
Grüße Uwe
damit sollte es nach deinem Muster gehen:
Die Namen der Werte musst du noch in Zeile 1 und 2 eintragen, den RootKey ab dem du suchen möchtest in Zeile 3 und den Keynamen der jeweils in den Subkeys existieren soll in Zeile 4.
@echo off & setlocal ENABLEDELAYEDEXPANSION
set VALUENAME1=String1
set VALUENAME2=String2
set ROOTKEY=HKCU\Software\Uwe
set SUCHKEY=Hallo
for /f "tokens=*" %%i IN ('reg query "%ROOTKEY%" /s /f "%SUCHKEY%"') DO @(
set "KEYNAME=%%i"
if "!KEYNAME:~0,4!" == "HKEY" (
echo Key gefunden : !KEYNAME!
reg query "!KEYNAME!" /v "!VALUENAME1!" 2>&1 | find /i /c "!VALUENAME1!" >"!temp!\found"
set /p success=<"!temp!\found"
if !success! == 1 (
for /f "tokens=3,*" %%g IN ('reg query "!KEYNAME!" /v "!VALUENAME1!" ^| findstr /i "!VALUENAME1!"') DO SET String1=%%g %%h
echo String 1 = !String1!
)
reg query "!KEYNAME!" /v "!VALUENAME2!" 2>&1 | find /i /c "!VALUENAME2!" >"!temp!\found"
set /p success=<"!temp!\found"
if !success! == 1 (
for /f "tokens=3,*" %%g IN ('reg query "!KEYNAME!" /v "!VALUENAME2!" ^| findstr /i "!VALUENAME2!"') DO SET String2=%%g %%h
echo String 2 = !String2!
)
)
)
del /q %temp%\found
Grüße Uwe