我學習批處理腳本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