2013-02-09 2 views
0

좋아, 여기서 도움이 필요해. 나는 variable1 (eat1 = 사과라고 가정 해 봅시다), variable2 (이것은 eat2 = 오렌지), variable3 (appaleorange = apple and orange)이 있기 전에 이것을했습니다. 이 작업을 수행해야합니다.가변 배치의 변수

echo Apple:%eat1% 
    echo Orange:%eat2% 
    echo Apple & Orange:%eat1%%eat2% 

이제 내 문제를 볼 수 있습니다. 위의 스크립트는 단어를 표시하지 않으며 appleorange 만 표시합니다. 그것은 내 스크립트가 아니기 때문에 필자가 필요로하는 이유는 숫자가 여러 개인 변수가 있기 때문입니다. 나는 전에 이것을했는데 어떻게 잊어 버렸는지 ... 당신이 전화를 걸 수 있고 여러 %가 할 수 있다는 것을 알고 있습니다.

이 경우에는 fterm 변수가 fterm (변수를 포함하지 않고 변수가 아닌 방법)이고 stermnum이 스크립트의 다른 부분에서 자주 변경되는 숫자가되도록합니다.

내 코드 :

set stermnum=1 
    call set exsternum=%%fterm%%stermnum%%% 
    echo Selected term:%stermnum% ^(%exsternum%^) 

사람이 무엇을 알고 있나요? 감사합니다 죄송합니다, 그것은 긴했다 : P

~ 편집 : 나는 그것을 발견 ... 도움이된다면 누구 I 않았다 : 호출 설정 exsternum = %% fterm % stermnum %%이 게시

죄송합니다 비록 내가 빨리 알아 냈다고해도

+1

자신의 답을 작성하고,이 뜻을 받아 들일하시기 바랍니다 귀하의 질문을 해결 된 것으로 표시하십시오. –

+0

질문에 추가 된 해결책은 여전히 ​​버그가 있습니다. – dbenham

답변

3

OP는 질문에 대한 해결책을 추가했지만 원래 질문 시나리오와 관련이 없으며 여전히 버그가 있습니다. 여기

은 원래 시나리오의 측면에서 영업 이익의 솔루션입니다 : 실제 코드에 대한

set "eat1=apple" 
set "eat2=orange" 
set "appleorange=apple and orange" 
call echo %%%eat1%%eat2%%% 

, 나는 영업 이익은 fterm1, fterm2, fterm3 등 그리고 명명 된 변수의 배열에 액세스하려고 생각 number 접미사는 stermnum이라는 변수에 있습니다.

call set exsternum=%%%fterm%%stermnum%%% 

을하지만 CALL은 비효율적이다 - 아마 하나의 CALL하지 띄는하지만 고통스럽게된다 : fterm는 자체 배열의 기본 이름을 포함하는 변수 인 경우

call set exsternum=%%fterm%stermnum%%% 

, 다음 솔루션이된다 루프에서 수천 번 실행하면 느려집니다.

지연 확장을 사용하는 훨씬 빠른 해결책이 있습니다. 지연된 확장은 사용하기 전에 활성화해야합니다.

원래 시나리오 :

setlocal enableDelayedExpansion 
set "eat1=apple" 
set "eat2=orange" 
set "appleorange=apple and orange" 
echo !%eat1%%eat2%! 

실제 코드를 해석 1 :

setlocal enableDelayedExpansion 
REM additonal code ... 
set exsternum=!fterm%stermnum%! 

실제 코드를 해석 2 :

setlocal enableDelayedExpansion 
REM additonal code ... 
set exsternum=!%fterm%%stermnum%!