Próximo snippet de código .bat
mostra como capturar reg query
output para uma variável usando for /F
loop . Principalmente explicado usando rem
comentários.
@ECHO OFF
SETLOCAL EnableExtensions DisableDelayedExpansion
set "_regKey=HKLM\SOFTWARE\Symantec\Symantec Endpoint Protection\currentversion\public-opstate"
set "_regVal=DeployRunningVersion"
rem my testing values in next 2 lines (remove them)
set "_regKey=HKCU\Control Panel\PowerCfg\PowerPolicies" delete this 2 lines
set "_regVal=Description" my testing values delete this 2 lines
for /F "tokens=1,2,*" %%G in ('
reg query "%_regKey%" /v "%_regVal%" ^| findstr /I "%_regVal%"
') do (
rem next 3 lines: debugging output could be removed
echo value name "%%~G"
echo value type "%%~H"
echo value data "%%~I"
set "_VersionReg=%%~I"
)
SET "_Version=%_VersionReg:~12,26%" delete this line and uncomment next one
rem SET "_Version=%_VersionReg:~134,14%" uncomment this line
rem an empty line for output better readability
echo(
rem show result: instead, you can use ECHO "%_Version%"
rem or enable delayed expansion and use ECHO !_Version!
set _
Saída :
==> D:\bat\SU42022.bat
value name "Description"
value type "REG_SZ"
value data "This scheme keeps the computer running so that it can be accessed from the netwo
rk. Use this scheme if you do not have network wakeup hardware."
_regKey=HKCU\Control Panel\PowerCfg\PowerPolicies
_regVal=Description
_Version=keeps the computer running
_VersionReg=This scheme keeps the computer running so that it can be accessed from the netwo
rk. Use this scheme if you do not have network wakeup hardware.
Recursos (leitura obrigatória, incompleta):
- (referência de comando) Um índice A-Z da linha de comando do Windows CMD
- (particularidades úteis) Sintaxe de linha de comando do shell do Windows CMD
- (
%G
,%H
etc. página especial) Argumentos da linha de comando (parâmetros) - (página especial) EnableDelayedExpansion
- (
|
,&
etc. página especial) Redirecionamento - (
%_VersionReg:~12,26%
etc.) Extrair parte de uma variável (substring) - (
^
caret, aspas duplas emset "varname=varvalue"
etc.) Caracteres, Delimitadores e Citações de escape