Dies füllt ein Array auf und gibt es
Sie könnten statt names[1] names[2] names[3] auch names1 names2 names3 verwenden, indem Sie names!i! anstelle von names[!i!] schreiben. Das Array wird durch die Generierung von Variablennamen erzeugt. Es gibt keine Array-Struktur in Batch. Aber es ist so ordentlich wie jede Array-Struktur, und das Auffüllen oder Ausdrucken sieht genau so aus, wie man ein Array in einer richtigen Sprache auffüllen oder ausdrucken würde (die tatsächlich eine Array-Struktur hat!)
@echo off
setlocal enabledelayedexpansion enableextensions
set i=-1
for %%f in (bob, tom, joseph) do (
set /a i=!i!+1
set names[!i!]=%%f
)
set lastindex=!i!
for /L %%f in (0,1,!lastindex!) do (
echo !names[%%f]!
)
die Ausgabe-
c:\blah>a
bob
tom
joseph
c:\blah>
Einige Erklärungen-
Das setlocal enabledelayedexpansion enableextensions
mit dem !var! anstatt %var% ist notwendig, um ein seltsames Verhalten zu verhindern, so dass sich Variablen innerhalb eines FOR oder IF richtig verhalten. Es ist eine Merkwürdigkeit bei Batch-Dateien. Siehe set /?
, wo das weiter erwähnt wird.
Dies füllt das Array auf und ist ziemlich einfach für jeden, der sich mit Arrays auskennt. Sie könnten auch names[0]=bob
names[1]=tom
names[2]=joseph
machen, obwohl eine der Schönheiten eines Arrays die Fähigkeit ist, ein Array mit einer Schleife aufzufüllen, was ich hier gemacht habe.
for %%f in (bob, tom, joseph) do (
set /a i=!i!+1
set names[!i!]=%%f
)
set lastindex=!i!
Dies zeigt das Array an. %%f, wenn Sie es als Echo ausgeben, werden Sie sehen, dass es von 0 bis zum letzten Index des Arrays geht, in Schritten von 1. also wird names[0] names[1] names[2]
for /L %%f in (0,1,!lastindex!) do (
echo !names[%%f]!
)
``` gedruckt