Cela remplit un tableau et l'imprime
Vous pourriez utiliser des noms1 noms2 noms3, plutôt que des noms [1] noms [2] noms [3] en écrivant des noms!i ! au lieu de noms[!i !]. Il produit le tableau en générant des noms de variables. Il n'y a pas de structure de tableau en lot. Mais elle est aussi soignée que n'importe quelle structure de tableau, et le remplissage ou l'impression ressemble exactement à la façon dont on remplirait ou imprimerait un tableau dans un langage propre (qui a en fait la structure de tableau !)
@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]!
)
la sortie -
c:\blah>a
bob
tom
joseph
c:\blah>
une explication -
Le setlocal enabledelayedexpansion enableextensions
avec le !var ! plutôt que %var% est nécessaire pour éviter les comportements bizarres, de sorte que les variables se comportent correctement lorsqu'elles sont dans un FOR ou un IF. C'est une bizarrerie avec les fichiers batch. Voir set /?
où cela est mentionné plus loin.
C'est ce qui remplit le tableau, et c'est assez simple pour quiconque s'y connaît en matière de tableaux. Vous pouvez aussi faire names[0]=bob
names[1]=tom
names[2]=joseph
bien que l'une des beautés d'un tableau soit la possibilité de le remplir avec une boucle, ce que j'ai fait ici.
for %%f in (bob, tom, joseph) do (
set /a i=!i!+1
set names[!i!]=%%f
)
set lastindex=!i!
Ceci affiche le tableau. %%f si vous le faites résonner, vous verrez qu'il ira de 0 au dernier index du tableau, par pas de 1. Il affichera donc les noms [0] noms [1] noms [2]
for /L %%f in (0,1,!lastindex!) do (
echo !names[%%f]!
)