在Windows批处理文件中打印多个变量表达式的值

时间:2011-07-01 20:49:49

标签: windows batch-file echo

所以我试图以(variable.variable)的形式打印出变量的值。我无法弄清楚该怎么做。我得到的最接近的是:

echo %"%Dog.Index%"%

刚刚打印出来:

Dog.Index

然后我尝试添加另一组%标签并打印出来:

%""%

任何帮助都会很棒!谢谢。

(修改)

我试图基本上创建一个类似数组的变量。所以我希望将Dog.1,Dog.2,Dog.3的值打印出来并分配给它们:

set Dog.%index%=(Value)

%index%只是我增量的一个计数器。 尝试“%Dog.index%”不起作用,%Dog%。%index% 再次感谢。

3 个答案:

答案 0 :(得分: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

您可以看到脚本的最后一部分同时使用了立即扩展和延迟扩展。立即扩展会将%index%替换为3,并生成变量名Dog.3。然后,延迟扩展将!Dog.3!表达式替换为Dog.3变量的值。

答案 1 :(得分:1)

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

答案 2 :(得分: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。你的旅费可能会改变。 :)