所以我试图以(variable.variable)的形式打印出变量的值。我无法弄清楚该怎么做。我得到的最接近的是:
echo %"%Dog.Index%"%
刚刚打印出来:
Dog.Index
然后我尝试添加另一组%标签并打印出来:
%""%
任何帮助都会很棒!谢谢。
(修改)
我试图基本上创建一个类似数组的变量。所以我希望将Dog.1,Dog.2,Dog.3的值打印出来并分配给它们:
set Dog.%index%=(Value)
%index%只是我增量的一个计数器。 尝试“%Dog.index%”不起作用,%Dog%。%index% 再次感谢。
答案 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。你的旅费可能会改变。 :)