(view source code of readreg.bat as plain text)
@ECHO OFF
:: Check Windows version
IF NOT "%OS%"=="Windows_NT" GOTO Syntax
:: Check command line arguments:
:: 2 required plus 1 optional, "?" or "/?" for help screen
ECHO.%* | 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 available
SET 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 local
SETLOCAL
:: Read variables from command line
SET RegSection=%~1
SET RegKey=%~2
SET RegVal=
IF /I "%~3"=="/K" (SET VarName=_%RegKey%) ELSE (SET VarName=RegVal)
:: Delete temporary file if it already exists
IF EXIST "%Temp%.\_readreg.dat" DEL "%Temp%.\_readreg.dat"
:: Store content of registry section in temporary file
START /WAIT REGEDIT.EXE /E "%Temp%.\_readreg.dat" "%~1"
:: Abort with error message if the section wasn't found in the registry
IF 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 result
IF 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 program
ENDLOCAL & SET %VarName%=%RegVal%
GOTO:EOF
:Syntax
ECHO.
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 note
VER | 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 availability
VER | 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.
:Example
ECHO.
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: 2024-04-16; loaded in 0.0107 seconds