윈도우즈 레지스트리 값을 읽어서 처리하고 싶은 경우가 있다. 이 때 사용하는 명령어가 'reg query' 다.

REG QUERY KeyName [/v [ValueName] | /ve] [/s]
          [/f Data [/k] [/d] [/c] [/e]] [/t Type] [/z] [/se Separator]
          [/reg:32 | /reg:64]

  KeyName  [\\Machine\]FullKey
           Machine - 원격 컴퓨터 이름. 생략하면 기본값이
                     현재 컴퓨터가 됩니다. 원격 컴퓨터에서는 HKLM과 HKU를
                     사용할 수 있습니다.
           FullKey - ROOTKEY\SubKey 이름 형식
                ROOTKEY - [ HKLM | HKCU | HKCR | HKU | HKCC ]
                SubKey  - 선택한 ROOTKEY 아래에 있는
                          레지스트리 키의 전체 이름

  /v       특정 레지스트리 키 값을 쿼리합니다.
           생략되면 키의 모든 값을 쿼리합니다.
           이 스위치로의 인수는 /f 스위치와 함께 지정되면
           옵션일 수 있습니다. 이것은 값 이름만 찾기 위한 것입니다.

  /ve      기본값 또는 비어 있는 값 이름(기본값)을 쿼리합니다.

  /s       모든 하위 키와 값을 반복적으로 쿼리합니다(dir /s의 경우처럼)

  /se      REG_MULTI_SZ에 대한 데이터 문자열에서 구분 기호(1문자의 길이만)를
           지정합니다. 기본값으로 "\0"을 구분 기호로 지정합니다.

  /f       검색할 문자열을 지정합니다.
           문자열에 빈 칸이 들어 있으면 큰 따옴표로 묶습니다. 기본값은 "*"입니다.

  /k       키 이름만 검색합니다.

  /d       검색할 데이터를 지정합니다.

  /c       검색할 때 대/소문자를 구분합니다.
           기본적으로, 검색할 때 대/소문자를 구분하지 않습니다.

  /e       정확하게 일치하는 것만 반환합니다.
           기본적으로, 일치하는 것 모두를 반환합니다.

  /t       레지스트리 값 데이터 형식을 지정합니다.
           유효한 형식:
             REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ,
             REG_DWORD, REG_QWORD, REG_BINARY, REG_NONE
           기본값은 모든 유형입니다.

  /z       세부 정보: 값 이름의 유형에 대응하는 숫자 값을 보여 줍니다.

  /reg:32  32비트 레지스트리 보기를 사용하여 키에 액세스해야 함을 지정합니다.

  /reg:64  64비트 레지스트리 보기를 사용하여 키에 액세스해야 함을 지정합니다.

레지스트리에서 읽은 값을 파싱해서 처리하려면 for 문을 사용하면 된다. 

for /f "tokens=3" %%a in ('reg query "HKCU\Control Panel\Colors" /V Background ^|findstr /ri "REG_SZ"') do echo %%a

출처 : https://superuser.com/questions/995591/how-to-get-a-registry-value-and-set-into-a-variable-in-batch

728x90

+ Recent posts