2013-02-09 153 views
0

好的,我需要幫助。我已經在變量1(假設它是eat1 = apple),變量2(這是eat2 = orange)以及變量3(appaleorange = apple和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

〜編輯:我發現了這件事......如果它可以幫助任何人,我做的事: 呼叫建立exsternum = %% fterm%stermnum %%

對不起張貼這即使我想通了這麼快

+1

請寫出你自己的答案,並接受它,這將將問題顯示爲已解決 – 2013-02-09 07:50:12

+0

附加到問題的解決方案仍然存在錯誤。 – dbenham 2013-02-09 13:27:40

回答

3

的OP附加一個解決問題的辦法,但它不涉及到原來的問題的情況下,它仍然有一個bug。

這裏是在原方案中的條款OP的解決方案:

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

對於實際的代碼,我相信OP想要訪問的命名fterm1,fterm2,fterm3等,以及一個變量數組數字後綴位於名爲stermnum的變量中。

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

如果fterm是本身含有數組的基本名稱的變量,然後使溶液變爲:

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

但是CALL是低效的 - 可能不與單個CALL明顯,但它變得痛苦如果在循環中執行數千次,則會變慢。

存在使用延遲擴展快得多的溶液。延遲擴展必須在使用之前啓用。

原始方案:

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%!