2011-08-23 2 views
1

배치 스크립트를 사용하여 파일을 읽는 중입니다. 기본적으로 특정 라인을 읽고 다른 변수에 토큰을 설정하려고합니다. 문제는 라인에 고정 된 수의 토큰이 없다는 것입니다. 다음 파일 형식을 고려 :배치 파일 : 동적 토큰 수를 사용하여 변수 설정

Line 1 Domains www.google.com www.yahoo.com www.reddit.com ... 
Line 2 541 5435 322 123 
Line 3 273 123 432 123 

내 스크립트가 그 세 번째 토큰 "도메인"에 해당하고 다른 변수에 따라 토큰을 저장하는 라인을 읽는 것입니다. 이 경우 Domain1=www.google.com, Domain2=www.yahoo.com, Domain3=www.reddit.com 등과 같이 설정합니다. 내 코드는 다음과 같이 표시됩니다

for /f "tokens=3*" %%A in (%file%) do (
    if ("%%A"=="Domains") (
     REM Delimit %%B with a space and store each token into different variables 
    ) 
) 

편집 : 문제 해결. 그것은 부족 대표로 내 자신의 질문에 대답하는 나를 위해 너무 빨리,하지만 여기 제레미의 게시물에서 시작하는 내 솔루션 :이 문제 정확히 그것을 해결 당신이 원하는 방법하지만 해결되지 않는

set index=1 
for /f "tokens=3*" %%A in (%file%) do (
    if ("%%A"=="Domains") (
     for %%C in (%%B) do (
      set Domain!index!=%%C 
      set /A index+=1 
     ) 
    ) 
) 

답변

1

이것이 실현 가능한 해결책이라고 생각하십시오.

@echo off 

for /f "tokens=3*" %%A in (%file%) do (
    if "%%A"=="Domains" (
    set domains=%%B 
) 
) 

for %%A in (%domains%) do (
    echo %%A 
) 
+0

이것은 결국 내가 얻은 해결책의 절반 이상이며 많은 도움이되었습니다. 기본적으로 중첩 for 루프를 만들었고 (즉, 첫 번째 루프에 두 번째 루프를 넣음) '% domains %'를 '%% B'로 바꿨습니다. – Dan