Script por lotes: arrays

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

Fig. 1.1 Crear array y agregar elementos

¿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  

Fig. 1.2 Acceso a elementos dentro del arreglo

¿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 

Fig. 1.3 Modificar elementos en un arreglo

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 

Fig. 1.4 Iterando sobre una array

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

Fig. 1.5 Longitud de un Array

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

Fig. 1.6 Creando Estructuras dentro de Arreglos

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.

Fig. 1.7 Elemento de prueba en una array

Publicación traducida automáticamente

Artículo escrito por Akash7 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *