2012-05-07 2 views
0

배치 파일에서 변수의 속성 파일 저장 형성 읽는 방법 : 내가 배치 파일의 변수에이 값을 사용하려면값이 내가 키 값 쌍 다음 한 속성 파일이

version 1 = test 
version 2 = qa 
version 3 = prd 

을 .

도스에서 동일한 루프 명령을 사용하고 있지만 마지막 값이 version인데, 즉 prd (version 3)입니다.

set total=3 
for /f %%a in (1 2 %total%) do (
    echo %%a 
    FOR /F "eol=; tokens=2,2 delims==" %%i IN ('findstr /i "version%%a" test.txt') DO (
     set version%%a=%%i 
    ) 
) 

version 1, version 2version 3이 값 prd을 모든 변수 : 다음

는 코드입니다.

누군가가이를 해결할 수 있습니까?

+0

파일이있는 test.txt하고 있지 프로퍼티 파일 : – user1049073

+0

정말 당신을 위치 :

version 1 = test version2=qa version 3 = two words version 4 = a = b 

는 이러한 결과를 제공합니다 도스에서 또는 Windows를 사용하고 있습니까? 예제 텍스트 파일에 실제로 한 줄만 있습니까? 아니면 세 줄 (이름, 값 쌍당 하나)입니까? 첫 번째 FOR 루프는 의미가 없습니다 - 작성된대로 1, 2 및 3으로 명명 된 파일을 찾고 내용을 처리합니다. 달성하려는 결과를 더 잘 설명해야합니다. – dbenham

+0

저는 각 버전의 값을 다른 변수, 즉 version1과 version2에 저장하려고합니다. 그리고 나는 단지 창문에서 일하고 있습니다 .. 그 dos 태그를 찾으십시오. 파일에 관해서는 이름값 쌍당 3 행을 포함합니다 .. – user1049073

답변

2

FOR 명령 (HELP FOR 입력)에 대한 설명서를 검토해야합니다. 유사하게 보이지만 다르게 행동하는 유사 콘텐츠가 많이 있습니다. 나는 ... 당신이 게시 된 코드는 어쨌든 당신이 설명하는 결과를 제공 할 수도 있지만 표시되지 않습니다

텍스트 파일은 "TEST.TXT"라는 그 내용은 다음과

version1=test 
version2=qa 
version3=prd 
처럼 보이는 경우

그러면 3 개의 변수를 원하는대로 쉽게 얻을 수 있습니다.

@echo off 
for /f "delims=" %%A in (test.txt) do set %%A 

그러나 파일은 내가 원하는 생각하지 않는 여분의 공간을 가지고있다. 변수 이름에는 공백이 있고 각 값의 공백이 있습니다. 나는 다음이 당신이 찾고있는 것을 줄 것이라고 생각합니다. 변수 이름에서 공백을 제거하고 값에서 공백을 제거합니다. 이 텍스트 파일에 대해 위의 스크립트를 실행

@echo off 
setlocal enableDelayedExpansion 
for /f "tokens=1* delims==" %%A in (test.txt) do (
    set name=%%A 
    set "name=!name: =!" 
    for /f "tokens=*" %%C in ("%%B") do set "!name!=%%C" 
) 
set version 

:

version1=test 
version2=qa 
version3=two words 
version4=a = b 
+0

echo! version1 !, echo! version2!에 대한 qa 테스트가 필요한 경우 필요한 변경을 제안하십시오. 감사 – mogli