web-dev-qa-db-fra.com

Boucle dans les valeurs de chaîne d'un fichier bat en ligne de commande

J'essaie de créer pour ma machine Windows un script de traitement par lots qui parcourt une liste de valeurs (chaîne/décimale) et utilise chaque valeur en tant que paramètre dans la boucle.

Voici un exemple de boucle for simple que je voudrais utiliser pour afficher tous les fichiers de version différents (de ma liste)

FOR ? in ('1.1','1.2','2.4','3.9') do echo V[value_from_for_loop].txt

J'ai du mal à lire en boucle chaque élément et à utiliser une variable dans mon instruction echo.

35
David
for %x in (1.1 1.2 2.4 3.9) do echo V%x.txt

Pour une utilisation dans un fichier de commandes, vous devrez doubler le %:

for %%x in (1.1 1.2 2.4 3.9) do echo V%%x.txt
50
Joey

Supposons que vous avez une très longue liste de valeurs qu'il sera très difficile de taper en ligne de commande. De plus, il existe une limite de longueur pour la ligne de commande DOS.

Dans ce cas, les valeurs peuvent être stockées dans un fichier de longueur arbitraire, un par ligne. Appelez-le my-values.list, avec un contenu similaire à:

1.1
1.2
2.4
3.9
3.9.1
3.9.2
3.91
3.91.1
...

Vous pouvez maintenant lire les variables de ce fichier texte, ligne par ligne:

for /f "tokens=*" %a in (c:\path\to\my-values.list) do echo.  Version%~nxa.txt
14
Kurt Pfeifle

Quelque chose comme ça, je crois:

for %x in (1.1 1.2 2.4 3.9) do (
    echo V%x.txt
)
0
mwpowellhtx

Cela ne me permet pas de commenter, mais je voulais ajouter mes 2 centimes de valeur ici . Le 'do' doit être sur la même ligne que la parenthèse droite de la commande 'pour'. En d'autres termes, cela fonctionnera:

for %x in (1.1 1.2 2.4 3.9) do echo V%x.txt

... mais ce ne sera pas:

for %x in (1.1 1.2 2.4 3.9)
    do echo V%x.txt
0
Ted O'Connor