2011-07-01 30 views
1

所以我試圖以(variable.variable)的形式輸出一個變量的值。我無法弄清楚如何去做。我得到的最接近的事情是:在Windows批處理文件中打印多個變量表達式的值

echo %"%Dog.Index%"% 

剛剛打印出來:

Dog.Index 

然後我嘗試添加另一套%的標籤和打印出來:

%""% 

任何幫助會很棒!謝謝。

(編者)

我想基本上做出一個類似數組的變量。所以,我想Dog.1,Dog.2的價值,Dog.3打印出來,並賦予它們的方式:

set Dog.%index%=(Value) 

而且%索引%僅僅是我遞增計數器。 嘗試「%Dog.index%」不起作用,%Dog%。%index% 再次感謝。

回答

2

您可能必須使用環境變量的延遲擴展。命令SETLOCAL EnableDelayedExpansion初始化該模式,之後您可以通過將變量包含在!而不是%中來使用延遲擴展。

下面是它如何被使用的說明:

@ECHO OFF 
SETLOCAL EnableDelayedExpansion 

ECHO Initialising... 
FOR /L %%i IN (1,1,5) DO SET Dog.%%i=!RANDOM! 

ECHO Displaying... 
FOR /L %%i IN (1,1,5) DO ECHO %%i: !Dog.%%i! 

SET index=3 
ECHO Dog.%index% is !Dog.%index%! 

輸出:

 
Initialising... 
Displaying... 
1: 1443 
2: 6940 
3: 24198 
4: 8054 
5: 14092 
Dog.3 is 24198 

你可以看到,該腳本的最後一部分,同時採用即時和延遲擴展。立即擴展用3代替%index%,結果變量名稱爲Dog.3。然後,延遲擴展用Dog.3變量的值替換!Dog.3!表達式。

+0

這正是我需要的!非常感謝!它開始讓我有點瘋狂haha – mike

+0

+1不錯!我不熟悉'!'替代和延期擴張。 –

1
set Dog=(Lassie WonderPup Fido Beethoven) 
for %%i in %Dog% do echo %%i 
pause 
+0

嗨kmb385, 是的,這與我想要做的有點不同。我需要的是奇怪的。我編輯我的帖子,如果這有助於清理任何東西。儘管感謝您的幫助! – mike

+0

@mike我更新了我的帖子,但我剛剛看到肯懷特的,我相信他的文章捕捉了你比我好的後。希望這可以解決您的問題。 –

1

您正在尋找這樣的事情(在批處理/ CMD文件 - 注意,這至少需要XP,IIRC,並命令擴展已啓用):

for /l %%i in (1, 1, 10) do set Dog%%i=%%i 
for /l %%j in (10, -1, 1) do echo Dog%%j is %%%Dog%%j 

(注其以下/字符是小寫L.)

有關的詳細信息上for(雙關語意),見MSDN TechNet

測試Win7,BTW。你的旅費可能會改變。 :)

相關問題