2010-07-06 5 views
4

레지스트리 문자열 값을 bat 파일에서 읽은 다음 읽은 값을 변수에 저장하려고합니다. 다음을 시도했습니다 :배치 파일에서 레지스트리 문자열 값을 읽는 방법

FOR %%a in ('REG QUERY HKLM\SOFTWARE\MathWorks\MATLAB\7.10 /v MATLABROOT') DO set MATLAB=%%a 
echo %MATLAB% 

그러나 작동하지 않습니다. 관심있는 단지 매우 값보다

+0

가능한 복제본 [배치 스크립트 내에서 레지스트리 키 값을 얻으려면 어떻게해야합니까?] (http : /stackoverflow.com/questions/445167/how-can-i-get-the-value-of-a-registry-key-from-within-a-batch-script) – Pondlife

답변

6

당신이

FOR /F "skip=4 tokens=2,*" %%A IN ('REG.exe query "HKLM\software\foo\bar" /v "baz"') DO set "MATLABROOT=%%B" 

과 같은 작업을 수행 할 수 있습니다, 당신은 토큰을 사용하는 것 = * 그리고 데이터가 어디에서 시작하는지 알 수 있도록 "REG_"을 찾는 %% A 구문 ...

+0

정말 있으면 끔찍하게 깨질 것입니다. 공백이 경로에 있습니다. –

+0

@CraigRinger : 2, *는 %% B가 나머지 줄로 바뀌는 것을 의미합니다. 더 큰 문제는 건너 뛰기 = 4 같은 것들입니다. 왜냐하면 그것은 OS 버전 등에 달려 있기 때문입니다. 배치 파일에서 이런 종류의 일을하는 것은 당신이 무엇을해도 무서운 일이 될 것입니다 ... – Anders

+2

이상하지 않습니까? "레지스트리 값을 변수로 가져 오기"는 배치 파일에서 가장 일반적인 요구 사항 중 하나라고 생각할 수 있습니다. –

2

reg 인쇄 밖으로 방법이 더. 최대한 멀리 볼 수있는, forskip=2tokens=3 옵션을 제공하여 작동 할 수 있습니다.

예상보다 많은 공간이있는 경우 조금 더 정교해야합니다. 값 (이 경우 바즈)의 이름에 공백이 포함되지 않은 경우 이름이 동적 런타임에만 알려진 경우

관련 문제