0
votes

Impossible d'imprimer (echo) un élément de tableau spécifique dans un script de lot

Je défini des listes dans un script de lot, puis je voudrais imprimer un élément spécifique de chacun d'entre eux, mais obtenir une sortie 'echo est désactivé' (est si c'est vide).

J'ai essayé de cycler le creux Listes avec A pour la boucle et qui a fonctionné bien.

Ceci est le code pour que j'essaie d'exécuter xxx

sortie attendue: xxx

sortie réelle: xxx


2 commentaires

Une liste séparée de l'espace ne fait pas une matrice. Lorsque cmd.exe Les gens parlent d'un "tableau", ils signifient généralement de créer plusieurs variables. var [0] , var [1] , var [2] , etc.


Il n'existe aucun concept de listes ou de tableaux dans les scripts par lots, seules des variables d'environnement normales (telles que var ); Mais ceux-ci sont parfois nommés comme des éléments de tableau (comme var [0] , var [1] , etc.), que j'appelle généralement des pseudo-matrices. Prenez une boucle à ce poste: tableaux, listes liées et autres structures de données dans cmd.exe (lot) script


3 Réponses :


0
votes

Si c'était vraiment votre intention imiter un tableau, ce serait quelque chose de similaire à celui-ci.

echo %clist[1]%`


0 commentaires

1
votes

Voici un exemple en utilisant la méthode décrite ici , pour créer Votre tableau comme variables: xxx


0 commentaires

0
votes

Si vos valeurs de membre "Array" sont toujours de 1 caractère long, une seule variable avec les opérations de sous-chaîne est tout ce qui est nécessaire.

@echo off

rem --------start of Define list--------
set "clist=ABCDEFGHIJKLMNOPQRSTUVWXYZ"
set "ilist=XYZABCDEFGHIJKLMNOPQRSTUVW" 
set "testl=1234"
rem --------end of Define list--------

echo %clist:~1,1%
echo %ilist:~1,1%
echo %testl:~1,1%

rem Show all values in loop
setlocal enableDelayedExpansion
for /l %%N in (0 1 25) do (
  echo clist[%%N] = !clist:~%%N,1!
  echo ilist[%%N] = !ilist:~%%N,1!
  echo testl[%%N] = !testl:~%%N,1!
)


0 commentaires