web-dev-qa-db-fra.com

Pour le comptage en boucle de 1 à n dans un script bat Windows

J'ai besoin d'exécuter une commande windows n fois dans un fichier de script bat. Je sais comment faire cela dans divers langages de programmation, mais je n'arrive pas à le faire correctement sur la ligne de commande Windows :

Je m'attendais à quelque chose comme ça

for(int i = 0; i < 100; i++) {
   // do something
}

ou même cela (mais pas entièrement au sérieux)

1.upto(100, {
   // do something
}) 

Merci!

--- ([~ # ~] modifier [~ # ~]

Je peux écrire un programme en Java, Perl, c ou quoi que ce soit qui va générer un script bat qui ressemble à ceci

for %%N in (1 2 3 4 5 6 7 8 9 10 11 12) do echo %%N

etc. Ou encore "mieux":

echo 1
echo 2
echo 3
echo 4
echo 5
echo 6
echo 7
echo 8
echo 9
echo 10
echo 11
echo 12

puis l'exécuter ... Mais le fait est que j'ai besoin d'un moyen concis pour spécifier une plage de nombres à parcourir à travers dans le script.

Merci!

25
raoulsson

Vous pouvez le faire de la même manière comme ceci:

ECHO Start of Loop

FOR /L %i IN (1,1,5) DO (
  ECHO %i
)

Le 1,1,5 est décodé comme:

(start,step,end)

Notez également que si vous l'incorporez dans un fichier de commandes, vous devrez utiliser le signe du double pourcentage (%%) pour préfixer vos variables, sinon l'interpréteur de commandes essaiera d'évaluer la variable% i avant d'exécuter la boucle.

46
Goyuix

La syntaxe est

FOR %%A IN (1 2 3) DO ECHO %%A

Bon article ici et XP spécificités ici

9
Andy

Directement depuis la ligne de commande:

for /L %n in (1,1,100) do @echo %n

Utilisation d'un fichier batch:

@echo off
for /L %%n in (1,1,100) do echo %%n

Affiche:

1
2
3
...
100
7
fmoraesjr