在Windowsbatch file中打印多个variablesexpression式的值

所以我试图以(variable.variable)的forms输出一个variables的值。 我无法弄清楚如何去做。 我得到的最接近的是:

echo %"%Dog.Index%"% 

刚刚打印出来的是:

 Dog.Index 

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

 %""% 

任何帮助将是伟大的! 谢谢。

(编者)

我试图基本上做一个数组类似的variables。 所以我想把Dog.1,Dog.2,Dog.3的值打印出来,

 set Dog.%index%=(Value) 

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

您可能必须使用环境变量的延迟扩展。 命令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%! 

输出:

初始化...
显示...
 1:1443
 2:6940
 3:24198
 4:8054
 5:14092
 Dog.3是24198

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

你正在寻找类似的东西(在批处理/ 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.)

有关(双关语言)的更多信息,请参阅MSDN TechNet 。

测试Win7,顺便说一句。 你的旅费可能会改变。 🙂

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