Zoeken met batch in reg key

Status
Niet open voor verdere reacties.

Tijger81

Gebruiker
Lid geworden
2 jan 2010
Berichten
397
Beste mensen,

Met onderstaand script probeer ik te achterhalen of de value: HPPrinter aanwezig is in het register van een pc.
Dit lukt goed als ik onderstaande reg query gebruik, maar het probleem is dat {123456789} bij elke installatie van een printer veranderd, waardoor de query hem niet meer kan vinden.
Hoe zorg ik ervoor dat vanaf Connections alle subkeys doorzocht worden op de value?


Code:
@echo off

::Controleer aanwezigheid printer

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Connections\{123456789}" | find /i "HPprinter"
if errorlevel 1 goto not_exist
if not errorlevel 1 goto exist

:not_exist
echo "niet gevonden"
rundll32 printui.dll,PrintUIEntry /q /ga /n  "\\printer\HPPrinter"
::net stop spooler
::net start spooler
goto eind

:exist
echo "gevonden"
::net stop spooler
::net start spooler
goto eind

:eind
pause


Wioe kan mij op weg helpen?
 
Dank je Edmoor. Maar ik wil het graag bij batch taal houden. Als ik een printer verwijder en weer aanmaak dan blijft de reg hetzelfde behalve hetgeen tussen {}. En dat weet ik niet hoe ik dat passeer
 
Code:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Connections


Of dat er gecheckt wordt of de key Connections geen key bevat. Dat is ook genoeg om te weten of de printer geinstalleerd is.
 
Code:
@echo off

::Controleer aanwezigheid printer
set "key=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Connections"
set "search=printer"
for /f "tokens=3" %%a in ('reg query "%key%" /s^| findstr "%search%"') do if %%a equ HPPrinter (echo "aanwezig") else (echo "afwezig")

Deze code werkt wel als er een value aanwezig is die printer heet (echo "aanwezig") of een andere naam heeft (dan echo "afwezig"). Dat werkt, maar als er geen value is in vanaf de Connections key dan krijg ik geen echo.
 
Laatst bewerkt:
Heb hem. Als de For /f de search niet kan vinden dan wordt alles achter DO niet gedaan(dat wist ik eigenlijk al niet:))
Dus met goto is het toch goed gekomen.

Code:
set "key=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Connections"
set "search=Printer"
for /f "tokens=3" %%a in ('reg query "%key%" /s^| findstr "%search%"') DO if %%a equ HPprinter (goto aanwezig) else (goto afwezig)

goto afwezig

:aanwezig
echo "Printer is aanwezig"
goto eind

:afwezig
echo "Printer is afwezig"
goto eind

:eind
pause
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan