Una array es una colección de elementos del mismo tipo de datos. Las arrays no están definidas explícitamente como tipos de secuencias de comandos por lotes, pero se pueden utilizar. Los siguientes elementos deben tenerse en cuenta cuando se utilizan los mismos miembros en Batch Script.
- Cada aspecto de los mismos miembros debe definirse mediante un orden establecido.
- Se requerirá un bucle ‘for’ para duplicar los valores del programa.
¿Cómo crear una array?
Podemos crear una array usando el comando ‘set’. Por ejemplo, establecer a[0] = 1 significa que creamos una array cuyo primer elemento del índice 0 tiene un valor de 1. Además, otra forma de definir una array es creando una lista y luego recorriéndola. Veamos el siguiente ejemplo.
@echo off set list_1=7 9 1 3 (for %%p in (%list_1%) do ( echo %%p ))
El comando anterior produce la siguiente salida
7 9 1 3
¿Cómo acceder a un arreglo y sus elementos?
La forma más fácil de acceder a una array es mediante su índice. En el ejemplo anterior, se puede acceder al primer elemento como a[0], al segundo con a[1], y así sucesivamente. El índice comienza desde 0 y termina con length(array)-1. Veamos el siguiente ejemplo, donde tenemos 2 elementos en la array y estamos accediendo a los valores por su índice.
@echo off set a[0]=5 set a[1]=12 echo The first element of the array created is %a[0]% echo The second element of the array created is %a[1]%
El código anterior producirá el siguiente resultado.
The first element of the array created is 5 The second element of the array created is 12
¿Cómo modificar los elementos de un array?
Podemos agregar un nuevo elemento o modificar el valor de un elemento existente usando su índice. La salida del siguiente programa es ‘el último elemento es 12’
@echo off set a[0]=5 set a[1]=7 set a[2]=9 Rem Adding a new element at the array end Set a[3]=12 echo The last element is %a[3]%
Ahora veamos cómo modificar el valor existente. En el siguiente fragmento, asignamos a[2] como 14 y el tercer elemento de la array ahora es 14
Establecer un[2]=14
echo El nuevo valor del tercer elemento de la array es %a[2]%
La salida del fragmento anterior da como resultado el siguiente comportamiento
El nuevo valor del tercer elemento de la array es 14
Iterando sobre una array
La iteración sobre una array se logra mediante el bucle for. Usando for loop, podemos acceder a los elementos uno por uno. Veamos el ejemplo a continuación. /l se usa aquí, ya que nos movemos a través del rango especificado e iteramos a través del Array.
@echo off set a[0]=5 set a[1]=7 set a[2]=9 Rem Adding a new element at the array end Set a[3]=12 echo The last element is %a[3]%
Los fragmentos anteriores producen el siguiente resultado
Download Upload Browse Add Save Delete
Longitud de una array
No hay una función predefinida para encontrar la longitud de la array. Podemos usar for loop e iterar a través de la array.
@echo off :: Here an array is defined set array[0]=1 set array[1]=4 set array[2]=9 set array[3]=10 :: Here we initializing an variable named :: len to calculate length of array set len=0 :: To iterate the element of array :Loop :: It will check if the element is defined or not if defined array[%len%] ( set /a len+=1 GOTO :Loop ) echo The length of the array is %len% pause
El programa anterior produce la siguiente salida.
The length of the array is 4
Crear estructuras dentro de arreglos
También podemos crear estructuras dentro de una array. En el siguiente ejemplo, cada una de las variables definidas mediante el comando predeterminado (set) tiene 2 valores asociados con cada uno de los miembros idénticos. La variable i se establece en 0 para que podamos movernos a través de la estructura y el bucle se ejecutará 3 veces. Comprobamos constantemente el estado de si el valor de i es igual al valor de len y, si no, ingresamos con un código. Podemos acceder a cada componente de la estructura utilizando la notación obj [%i%].
@echo off set obj[0].Name=Akash set obj[0].ID=101 set obj[1].Name=Ajay set obj[1].ID=102 set obj[2].Name=Thomas set obj[2].ID=103 FOR /L %%i IN (0 1 2) DO ( call echo User Name = %%obj[%%i].Name%% call echo User ID = %%obj[%%i].ID%% )
El código anterior produce la siguiente salida
User Name = Akash User ID = 101 User Name = Ajay User ID = 102 User Name = Thomas User ID = 103
Prueba de existencia de un elemento
Usamos la funcionalidad definida para verificar si un elemento está en la array o no. %1 es el primer argumento de la línea de comando de invocación. %~1 significa que se eliminan las comillas que rodean los argumentos.
@ECHO OFF &SETLOCAL set "Array[Akash]=true" set "Array[John]=true" set "Array[Venky]=true" set "Array[Praveen]=true" set "MyUserName=Akash" call:check "%MyUserName%" set "MyUserName=Paul" call:check "%MyUserName%" goto:eof :check if defined Array[%~1] ( echo %~1 is in the array. ) else ( echo %~1 is NOT in the array. ) exit /b
El código anterior da la siguiente salida
Akash is in the array. Paul is NOT in the array.