Vorweg: Es wird kein "echtes" Array wie man es von einer Hochsprache gewohnt ist. Im Prinzip werden dynamisch variablen erstellt und durchnummeriert. Ein konkretes Beispiel befindet sich in der Funktion OR.bat.
Die Funktion "ReadCols.bat" liest eine semikolongetrennte Zeichenkette inklusive Leerzeichen und teilt sie in einzelne Variablen. Sie findet hier verschiedenen Gelegenheiten Verwendung. Unbedingt auf Anführungszeichen achten! Wichtig ist der Codeteil SET %prefix%[%cnt%]=%%i relativ weit unten. Vergleiche in diesem Zusammenhang auch Variable Variablennamen.
REM *************************************************
REM * Name: ReadCols.bat *
REM * Type: Function *
REm * Autor: Tim Pustelni *
REM * Date: 18.01.2017 *
REM *************************************************
REM * Description *
REM * Zerlegt semikolongetrennten String (~Zeile) *
REM * in einzelne Werte (~Spalten). *
REM *************************************************
REM * Input: %1 (prefix) Prefix für die Variablen- *
REM * namen der Ausgabe *
REM * %2 (sRow) Semikolongetr. Zeichenfolge *
REM * ACHTUNG: Bei Aufruf in "" fassen *
REM * Sonst werden ; als Trennzeichen *
REM * Interpretiert! *
REM * %3 (frstCol)=Erste auszugebende Spalte *
REM * optional (Standard=0) *
REM * %4 (lastCol)=Letzte auszugebende Spalte *
REM * optional (Standard=max. 31) *
REM *************************************************
REM * Output: Variablen mit Zellwert im Format *
REM * %prefix%[%Col%] (z.B. Cell[5]) *
REM * Numeriert wird mit der Spaltennummer *
REM * ab %frstCol% *
REM *************************************************
REM * Anmerkung: Setlocal EnableDelayedExpansion *
REM * In aurufender Datei notwendig *
REM *************************************************
REM * Aufrufbeispiel (Anführungszeichen notwendig): *
REM * CALL ReadCols.bat col "1;A;G;Leer zeichen;ABC"*
REM *************************************************
SET prefix=%1
REm das ~ignoriert einschließende "" (schneidet sie ab)
SET sRow=%~2
SET frstCol=%3
IF NOT DEFINED frstCol SET frstCol=0
SET lastCol=%4
IF NOT DEFINED lastCol SET lastCol=31
REM Numerierung Beginnt mindestens mit 1 (0 gibt Fehler)
SET /A cnt=%frstCol%+1
:Schleife
FOR /F "delims=; tokens=%cnt%" %%i IN ("%sRow%") DO (
IF %cnt% GEQ %frstCol% (
SET %prefix%[%cnt%]=%%i
SET /A cnt+=1
goto :Schleife
)
IF %cnt% GEQ %lastCol% goto :SchleifeEnde
)
:SchleifeEnde
Im Prinzip das selbe vorgehen nur mit 2 oder mehr Schleifen: