Script batch - Matrici

Gli array non sono specificatamente definiti come un tipo in Batch Script, ma possono essere implementati. Le seguenti cose devono essere annotate quando gli array sono implementati in Batch Script.

  • Ogni elemento dell'array deve essere definito con il comando set.
  • Il ciclo "for" sarebbe necessario per scorrere i valori dell'array.

Creazione di un array

Un array viene creato utilizzando il seguente comando set.

set a[0]=1

Dove 0 è l'indice della matrice e 1 è il valore assegnato al primo elemento della matrice.

Un altro modo per implementare gli array è definire un elenco di valori e scorrere l'elenco di valori. Il seguente esempio mostra come questo può essere implementato.

Esempio

@echo off 
set list = 1 2 3 4 
(for %%a in (%list%) do ( 
   echo %%a 
))

Produzione

Il comando precedente produce il seguente output.

1
2
3
4

Accesso agli array

È possibile recuperare un valore dall'array utilizzando la sintassi del pedice, passando l'indice del valore che si desidera recuperare tra parentesi quadre immediatamente dopo il nome dell'array.

Esempio

@echo off 
set a[0]=1 
echo %a[0]%

In questo esempio, l'indice inizia da 0, il che significa che è possibile accedere al primo elemento utilizzando l'indice come 0, il secondo elemento è accessibile utilizzando l'indice come 1 e così via. Controlliamo il seguente esempio per creare, inizializzare e accedere agli array:

@echo off
set a[0] = 1 
set a[1] = 2 
set a[2] = 3 
echo The first element of the array is %a[0]% 
echo The second element of the array is %a[1]% 
echo The third element of the array is %a[2]%

Il comando precedente produce il seguente output.

The first element of the array is 1 
The second element of the array is 2 
The third element of the array is 3

Modifica di un array

Per aggiungere un elemento alla fine dell'array, puoi usare l'elemento set insieme all'ultimo indice dell'elemento array.

Esempio

@echo off 
set a[0] = 1  
set a[1] = 2  
set a[2] = 3 
Rem Adding an element at the end of an array 
Set a[3] = 4 
echo The last element of the array is %a[3]%

Il comando precedente produce il seguente output.

The last element of the array is 4

È possibile modificare un elemento esistente di un array assegnando un nuovo valore a un determinato indice come mostrato nell'esempio seguente:

@echo off 
set a[0] = 1 
set a[1] = 2  
set a[2] = 3 
Rem Setting the new value for the second element of the array 
Set a[1] = 5 
echo The new value of the second element of the array is %a[1]%

Il comando precedente produce il seguente output.

The new value of the second element of the array is 5

Iterazione su un array

L'iterazione su un array si ottiene utilizzando il ciclo "for" e passando attraverso ogni elemento dell'array. Il seguente esempio mostra un modo semplice per implementare un array.

@echo off 
setlocal enabledelayedexpansion 
set topic[0] = comments 
set topic[1] = variables 
set topic[2] = Arrays 
set topic[3] = Decision making 
set topic[4] = Time and date 
set topic[5] = Operators 

for /l %%n in (0,1,5) do ( 
   echo !topic[%%n]! 
)

Le seguenti cose devono essere annotate sul programma di cui sopra:

  • Ogni elemento dell'array deve essere definito in modo specifico utilizzando il comando set.

  • Il ciclo "for" con il parametro / L per spostarsi tra gli intervalli viene utilizzato per scorrere l'array.

Produzione

Il comando precedente produce il seguente output.

Comments 
variables 
Arrays 
Decision making 
Time and date 
Operators

Lunghezza di un array

La lunghezza di un array viene eseguita iterando l'elenco dei valori nell'array poiché non esiste una funzione diretta per determinare il numero di elementi in un array.

@echo off 
set Arr[0] = 1 
set Arr[1] = 2 
set Arr[2] = 3 
set Arr[3] = 4 
set "x = 0" 
:SymLoop 

if defined Arr[%x%] ( 
   call echo %%Arr[%x%]%% 
   set /a "x+=1"
   GOTO :SymLoop 
)
echo "The length of the array is" %x%

Produzione

Output Il comando precedente produce il seguente output.

The length of the array is 4

Creazione di strutture in array

Le strutture possono anche essere implementate in file batch utilizzando un po 'di codifica extra per l'implementazione. Il seguente esempio mostra come questo può essere ottenuto.

Esempio

@echo off 
set len = 3 
set obj[0].Name = Joe 
set obj[0].ID = 1 
set obj[1].Name = Mark 
set obj[1].ID = 2 
set obj[2].Name = Mohan 
set obj[2].ID = 3 
set i = 0 
:loop 

if %i% equ %len% goto :eof 
set cur.Name= 
set cur.ID=

for /f "usebackq delims==.tokens=1-3" %%j in (`set obj[%i%]`) do ( 
   set cur.%%k=%%l 
) 
echo Name = %cur.Name% 
echo Value = %cur.ID% 
set /a i = %i%+1 
goto loop

Le seguenti cose chiave devono essere annotate sul codice sopra.

  • Ogni variabile definita utilizzando il comando set ha 2 valori associati a ciascun indice dell'array.

  • La variabile i è impostato a 0 in modo che possiamo scorrere la struttura per la lunghezza dell'array che è 3.

  • Controlliamo sempre la condizione se il valore di i è uguale al valore di len e in caso contrario, ripetiamo il codice.

  • Siamo in grado di accedere a ogni elemento della struttura utilizzando la notazione obj [% i%].

Produzione

Il comando precedente produce il seguente output.

Name = Joe 
Value = 1 
Name = Mark 
Value = 2 
Name = Mohan 
Value = 3