Isto preenche uma matriz e imprime-a
Você poderia usar nomes1 nomes2 nomes3, em vez de nomes [1] nomes [2] nomes [3] escrevendo nomes! i! em vez de nomes [! i!]. Produz o array gerando nomes de variáveis. Não há uma estrutura de matriz em lote. Mas é tão simples quanto qualquer estrutura de array, e preencher ou imprimir tem exatamente a mesma aparência de como preencher ou imprimir uma matriz em uma linguagem apropriada (que na verdade tem a estrutura da matriz!)
@echo off
setlocal enabledelayedexpansion enableextensions
set i=-1
for %%f in (bob, tom, joseph) do (
set /a i=!i!+1
set names[!i!]=%%f
)
set lastindex=!i!
for /L %%f in (0,1,!lastindex!) do (
echo !names[%%f]!
)
a saída -
c:\blah>a
bob
tom
joseph
c:\blah>
Algumas explicações -
O setlocal enabledelayedexpansion enableextensions
com o! var! em vez de% var% ser necessário para evitar comportamentos estranhos, para que as variáveis se comportem adequadamente quando dentro de um FOR ou um IF. É uma esquisitice com arquivos em lote. Veja set /?
onde isso é mencionado mais adiante.
Isso é o que preenche a matriz e é bastante direto para qualquer pessoa que saiba sobre matrizes. Você também pode fazer names[0]=bob
names[1]=tom
names[2]=joseph
, embora uma das belezas de uma matriz seja a capacidade de preencher uma matriz com um loop, que é o que fiz aqui.
for %%f in (bob, tom, joseph) do (
set /a i=!i!+1
set names[!i!]=%%f
)
set lastindex=!i!
Isso exibe a matriz. %% f se você fizer o eco que você verá, irá de 0 para o último índice da matriz, em passos de 1. assim, irá imprimir nomes [0] nomes [1] nomes [2]
for /L %%f in (0,1,!lastindex!) do (
echo !names[%%f]!
)