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