(view source code of readreg.bat as plain text)
@ECHO OFF
:: Check Windows versionIF NOT "%OS%"=="Windows_NT" GOTO Syntax
:: Check command line arguments::: 2 required plus 1 optional, "?" or "/?" for help screenECHO.%* | FIND "?" >NUL
IF NOT ERRORLEVEL 1 GOTO Syntax
IF "%~2"=="" GOTO Syntax
IF NOT "%~4"=="" GOTO Syntax
IF NOT "%~3"=="" IF /I NOT "%~3"=="/K" GOTO Syntax
:: Check if either FINDSTR or EGREP is availableSET FINDSTR=
FINDSTR.EXE /? >NUL 2>&1
IF ERRORLEVEL 1 (
EGREP.EXE --help >NUL 2>&1
IF ERRORLEVEL 1 GOTO Syntax
SET FINDSTR=EGREP
):: Keep variables localSETLOCAL
:: Read variables from command lineSET RegSection=%~1
SET RegKey=%~2
SET RegVal=
IF /I "%~3"=="/K" (SET VarName=_%RegKey%) ELSE (SET VarName=RegVal)
:: Delete temporary file if it already existsIF EXIST "%Temp%.\_readreg.dat" DEL "%Temp%.\_readreg.dat"
:: Store content of registry section in temporary fileSTART /WAIT REGEDIT.EXE /E "%Temp%.\_readreg.dat" "%~1"
:: Abort with error message if the section wasn't found in the registryIF NOT EXIST "%Temp%.\_readreg.dat" (
ECHO.
ECHO ERROR: [%RegSection%] not found
) 1>&2
IF NOT EXIST "%Temp%.\_readreg.dat" (
ENDLOCAL
GOTO:EOF
):: Use either FINDSTR or EGREP to search requested value in temporary file.:: Note: TYPE is used here because the temporary file may be in Unicode.IF "%FINDSTR%"=="EGREP" (
FOR /F "tokens=1* delims==" %%A IN ('TYPE "%Temp%.\_readreg.dat" 2^>NUL ^| EGREP.EXE -i "^^\"?%~2\"?="') DO (
SET RegKey=%%~A
SET RegVal=%%~B
)) ELSE (
FOR /F "tokens=1* delims==" %%A IN ('TYPE "%Temp%.\_readreg.dat" 2^>NUL ^| FINDSTR.EXE /I /B /R /C:"\"%~2\"="') DO (
SET RegKey=%%~A
SET RegVal=%%~B
)):: Format and display the resultIF DEFINED RegVal (SET RegVal=%RegVal:\\=\%) ELSE (SET RegVal= - Undefined -)
ECHO.
ECHO [%RegSection%]
ECHO %RegKey%=%RegVal%
:: Delete temporary file:: IF EXIST "%Temp%.\_readreg.dat" DEL "%Temp%.\_readreg.dat":: Pass result in variable to calling environment and end programENDLOCAL & SET %VarName%=%RegVal%
GOTO:EOF
:SyntaxECHO.
ECHO ReadReg.bat, Version 2.10 for Windows NT 4 and later
ECHO Read a value from the registry and store it in an environment variable
ECHO.
ECHO Usage: READREG "section" "key" [ /K ]
ECHO.
ECHO Where: "section" is the section name, without brackets
ECHO "key" is the key whose value must be read
ECHO /K uses "_key" for environment value name
ECHO.
:: In case we use NT 4 we have multiple notes, otherwise one single noteVER | FIND "Windows NT" >NUL
IF ERRORLEVEL 1 ECHO Note: The result is stored in an environment variable %%RegVal%%,
VER | FIND "Windows NT" >NUL
IF NOT ERRORLEVEL 1 ECHO Notes: The result is stored in an environment variable %%RegVal%%,
ECHO unless /K switch is used.
:: Message for NT 4 about FINDSTR and EGREP availabilityVER | FIND "Windows NT" >NUL
IF ERRORLEVEL 1 GOTO Example
ECHO This batch file uses either FINDSTR or EGREP to search for the
ECHO the requested value.
ECHO FINDSTR is part of the Windows NT 4 Resource Kit, available at
ECHO http://www.microsoft.com/ntserver/nts/downloads/recommended/ntkit/
ECHO EGREP is available at http://unxutils.sourceforge.net/ and
ECHO several other sites.
:ExampleECHO.
ECHO Example: READREG "HKEY_CURRENT_USER\Environment" "path" /K
ECHO should store the user part of the PATH variable in _PATH variable
ECHO.
ECHO Written by Rob van der Woude
ECHO http://www.robvanderwoude.com
page last modified: 2025-10-11; loaded in 0.0079 seconds