mein.wunschname.hier
Goto Top

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!

Content-Key: 205077

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

Ausgedruckt am: 28.03.2024 um 13:03 Uhr

Mitglied: colinardo
colinardo 20.04.2013 aktualisiert um 11:24:43 Uhr
Goto Top
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.

@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