Esto rellena un array y lo imprime
Podrías usar nombres1 nombres2 nombres3, en lugar de nombres[1] nombres[2] nombres[3] escribiendo nombres!i! en lugar de nombres[!i!]. Produce el array generando nombres de variables. No hay una estructura de array en el lote. Pero es tan limpio como cualquier estructura de array, y rellenar o imprimir se ve exactamente como uno rellenaría o imprimiría un array en un lenguaje apropiado (¡que realmente tiene la estructura de array!)
@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]!
)
la salida-
c:\blah>a
bob
tom
joseph
c:\blah>
Alguna explicación-
El setlocal enabledelayedexpansion enableextensions
con el !var! en lugar de %var% es necesario para prevenir un comportamiento extraño, para que las variables se comporten correctamente cuando están dentro de un FOR o un IF. Es una rareza con los archivos batch. Ver set /?
donde se menciona más adelante.
Esto es lo que rellena el array, y es bastante sencillo para cualquiera que sepa de arrays. También podrías hacer names[0]=bob
names[1]=tom
names[2]=joseph
aunque una de las bellezas de un array es la capacidad de rellenar un array con un bucle, que es lo que he hecho aquí.
for %%f in (bob, tom, joseph) do (
set /a i=!i!+1
set names[!i!]=%%f
)
set lastindex=!i!
Esto muestra el array. Si lo haces eco, verás que irá de 0 al último índice del array, en pasos de 1. Así imprimirá nombres[0] nombres[1] nombres[2]
for /L %%f in (0,1,!lastindex!) do (
echo !names[%%f]!
)