bat reg auslesen software
ich habe folgendes problem
ich möchte mit einer bat datei die installierte software aus der reg auslesen
das problem dabei ist das in der reg keys sind die leezeichen enthalten
den pfad hklm\software..... hatte ich auch mal in "" gesetzt aber bringt ja nichts da die keys die leerzeichen enthalten
jemand eine lösung?
set log=\\logs\%computername%.txt
set logg=\\logg\%computername%.txt
echo. >%log%
For /f %%a in ('reg query hklm\software\microsoft\windows\currentversion\uninstall') do (call :process_query %%a)
find /i "DisplayName" < %log% | sort > %logg%
goto :eof
:process_query
set KEY=%1
reg query %key% /v DisplayName >>%log%
goto :eof
ich möchte mit einer bat datei die installierte software aus der reg auslesen
das problem dabei ist das in der reg keys sind die leezeichen enthalten
den pfad hklm\software..... hatte ich auch mal in "" gesetzt aber bringt ja nichts da die keys die leerzeichen enthalten
jemand eine lösung?
set log=\\logs\%computername%.txt
set logg=\\logg\%computername%.txt
echo. >%log%
For /f %%a in ('reg query hklm\software\microsoft\windows\currentversion\uninstall') do (call :process_query %%a)
find /i "DisplayName" < %log% | sort > %logg%
goto :eof
:process_query
set KEY=%1
reg query %key% /v DisplayName >>%log%
goto :eof
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 102486
Url: https://administrator.de/contentid/102486
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
7 Kommentare
Neuester Kommentar
Moin masterdns,
wattn Nick und wattn Beitragstitel. Respekt.
Du musst, wenn eine Rückgabe mit Leerzeichen oder, auf bätchisch, mit mehreren Token zurückkommen kann, der FOR/F-Anweisung noch ein "delims=" (=Anweisung keine Delimiter=nimm komplette Ausgabe) mitgeben.
Mit zusätzlichem "delims=" erhältst Du am CMD-Prompt (proof-of-concept):
[diese drei Zeilen einzeln/nacheinander Copy & Pasten; erste zeile ist optional]
Ausgabe z.B.
<code type ="plain">.....
DisplayName REG_SZ Windows Workflow Foundation
DisplayName REG_SZ Windows XP-Hotfix - KB873339
DisplayName REG_SZ Windows XP-Hotfix - KB885250
DisplayName REG_SZ Windows XP-Hotfix - KB885835
DisplayName REG_SZ Windows XP-Hotfix - KB885836
DisplayName REG_SZ Windows XP-Hotfix - KB888113
DisplayName REG_SZ Windows XP-Hotfix - KB888302
DisplayName REG_SZ Windows XP-Hotfix - KB890859
Grüße
Biber
wattn Nick und wattn Beitragstitel. Respekt.
Du musst, wenn eine Rückgabe mit Leerzeichen oder, auf bätchisch, mit mehreren Token zurückkommen kann, der FOR/F-Anweisung noch ein "delims=" (=Anweisung keine Delimiter=nimm komplette Ausgabe) mitgeben.
Mit zusätzlichem "delims=" erhältst Du am CMD-Prompt (proof-of-concept):
[diese drei Zeilen einzeln/nacheinander Copy & Pasten; erste zeile ist optional]
mode con cols=166 lines=55
set "RegKey=hklm\software\microsoft\windows\currentversion\uninstall"
(for /f "delims=" %i in ('reg query %regkey%') do @Reg query "%i" /v DisplayName 2>nul|find /i "Displayname")|sort
Ausgabe z.B.
<code type ="plain">.....
DisplayName REG_SZ Windows Workflow Foundation
DisplayName REG_SZ Windows XP-Hotfix - KB873339
DisplayName REG_SZ Windows XP-Hotfix - KB885250
DisplayName REG_SZ Windows XP-Hotfix - KB885835
DisplayName REG_SZ Windows XP-Hotfix - KB885836
DisplayName REG_SZ Windows XP-Hotfix - KB888113
DisplayName REG_SZ Windows XP-Hotfix - KB888302
DisplayName REG_SZ Windows XP-Hotfix - KB890859
Grüße
Biber
kann ich nicht bestätigen
dreh doch die bedingung um so dass nur alle reg-subkeys ausgegeben werden die keinen wert für displayname enthalten
bei mir erscheinen dann sowohl subkeys mit leerzeichen wie auch ohne aber weil kein schlüssel displayname vorhanden ist
bsp
dreh doch die bedingung um so dass nur alle reg-subkeys ausgegeben werden die keinen wert für displayname enthalten
for /f "delims=" %i in ('reg query %regkey%') do @Reg query "%i" /v DisplayName >nul|| echo "%i"
bsp
....
Fehler: Der angegebene Registrierungsschlüssel oder Wert konnte nicht gefunden werden.
"HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\uninstall\MsJavaVM"
Fehler: Der angegebene Registrierungsschlüssel oder Wert konnte nicht gefunden werden.
"HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\uninstall\Nero - Burning Rom!UninstallKey"
....
!!!
--> bei diesem subkey mit leerzeichen gibt es keinen key displayname sondern nur einen #displaynamen aber der wird ja nicht gefunden weil ich explizit den genauen schlüsselnamen angebe
wieso die keinen wert für displayname enthalten?
beispiel>reg query "HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\uninstall\Nero - Burning Rom!UninstallKey" /s
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\uninstall\Nero - Burning Rom!UninstallKey
UninstallString REG_SZ C:\Programme\Ahead\nero\uninstall\UNNERO.exe /UNINSTALL
DisplayIcon REG_SZ C:\Programme\Ahead\nero\nero.exe
SRCConcept REG_DWORD 0x1
#DisplayName REG_SZ Nero OEM
ShowDisplayName REG_DWORD 0x0
kannst du mir mal die ganze bat schicken die bei dir funktioniert?
ich hab doch gar keine weil weil spiel doch noch am cmd promptweil ich bekomm die fehlermeldung
evtl hast du es ja as is in den batch übernommen aber dort müssen alle %i zu %%i werden und so weiter