我学习批处理脚本tutorialspoint现在,这里是一个非常简单的脚本:为什么在数组中使用set不能使用echo?
@echo off
set a[0]=0
set a[1]=1
set a[2]=2
set a[3]=3
set a[4]=4
set a[5]=5
for /l %%n in (0,1,5) do (echo %a[%%n]%)
为什么结果是"ECHO is off"
,如果我写这样for /l %%n in (0,1,5) do (echo a[%%n])
我可以得到
a[0]
a[1]
a[2]
a[3]
a[4]
a[5]
所以为什么我不能使用echo来获取数组的值?
当命令处理程序发现一个块(括号内的任何内容)时,将其完全解析并将变量扩展为块计算时的值。如果更新块中的变量值,则需要为变量启用延迟扩展以反映所做的更改。使用'setlocal EnableDelayedExpansion'并将语法从'%var%'更改为'!var!'来进行延迟扩展。 – elzooilogico
关于[Windows命令解释器(CMD.EXE)如何解析脚本有一个很好的解释?](http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe -parse-scripts/4095133#4095133) – elzooilogico
给定链接的有趣网站。漂亮的演示文稿,大量的描述和代码,但所有的例子都是错误的! 'set'命令中的等号前不能有空格。你可以在[这个答案]中查看批处理文件中阵列管理的详细描述(http://stackoverflow.com/questions/10166386/arrays-linked-lists-and-other-data-structures-in-cmd-exe-批处理脚本/ 10167990#10167990)。 – Aacini