J'ai besoin d'exécuter une commande 100-200 fois, et jusqu'à présent, mes recherches indiquent que je devrais soit copier / coller 100 copies de cette commande, OU utiliser une for
boucle, mais la for
boucle attend une liste d'éléments, donc j'aurais besoin 200 fichiers sur lesquels opérer, ou une liste de 200 éléments, ce qui ne va pas.
Je préfère ne pas avoir à écrire un programme C et à parcourir la longueur de la documentation de la raison pour laquelle j'ai dû écrire un autre programme pour exécuter mon programme à des fins de test. La modification de mon programme lui-même n'est pas non plus une option.
Donc, étant donné une commande, a
comment pourrais-je l'exécuter plusieurs N
fois via un script batch?
Remarque: je ne veux pas d'une boucle infinie
Par exemple, voici à quoi cela ressemblerait en Javascript:
var i;
for (i = 0; i < 100; i++) {
console.log( i );
}
À quoi cela ressemblerait-il dans un script batch exécuté sur Windows?
la source
Réponses:
for /l
est votre ami:Commence à 1, pas à pas et se termine à 100.
Utilisez deux
%
s si c'est dans un fichier batch(qui est une des choses que je déteste vraiment à propos des scripts Windows)
Si vous avez plusieurs commandes pour chaque itération de la boucle, procédez comme suit:
ou dans un fichier batch
Clé:
/l
indique que lafor
commande fonctionnera de manière numérique, plutôt que d'opérer sur un ensemble de fichiers,%x
c'est la variable boucles(valeur de départ, incrément de valeur, condition de fin [inclus]))
la source
%x
est la variable de boucle,/l
(pas\l
) signifie que la commande for fonctionnera de manière numérique, plutôt que d'opérer sur un ensemble de fichiers.for /l %x in (1, 1, 100) do echo %x
j'obtiens "x non attendu".Et pour itérer sur les fichiers d'un répertoire:
Vous devez utiliser "enableDelayedExpansion" et! FILENAME! au lieu de $ FILENAME $. Dans le second cas, DOS n'interprète la variable qu'une seule fois (avant qu'elle n'entre dans la boucle) et non à chaque fois que le programme boucle.
la source
Modèle pour une boucle simple mais comptée:
Exemple: dites "Bonjour tout le monde!" 5 fois:
Cet exemple affichera:
la source
set /p loopcount="How many loops? "
pour que vous puissiez l'exécuter avec une entrée utilisateur. C'est plus pratique.Vous pouvez également essayer ceci au lieu d'une
for
boucle:C'est assez petit et c'est ce que j'utilise tout le temps.
la source
Ou vous pouvez décrémenter / incrémenter une variable du nombre de fois que vous voulez boucler:
Évidemment, utiliser
FOR /L
est l'autoroute et c'est la ruelle qui prend plus de temps, mais elle arrive à la même destination.la source
Vous pouvez faire quelque chose dans le sens suivant en évitant la boucle FOR.
la source
Vous pouvez le faire sans
for
instruction ^. ^:Il a une compréhension de base. Faites juste un test. : P
la source
Moyen très basique d'implémenter le bouclage dans la programmation cmd à l'aide d'étiquettes
la source
DOS n'offre pas de mécanismes très élégants pour cela, mais je pense que vous pouvez toujours coder une boucle pour 100 ou 200 itérations avec un effort raisonnable. Bien qu'il n'y ait pas de chiffre
for
boucle , vous pouvez utiliser une chaîne de caractères comme «variable de boucle».Codez la boucle en utilisant GOTO, et pour chaque itération, utilisez
SET X=%X%@
pour ajouter un autre@
signe à une variable d'environnement X; et pour quitter la boucle, comparez la valeur de X avec une chaîne de 100 (ou 200)@
signes.Je n'ai jamais dit que c'était élégant, mais ça devrait marcher!
la source
/a
option de laSET
commande évaluera une expression numérique pour la valeur du côté droit. Voir la doucmentation pour SET . Il n'est pas nécessaire de faire l'astuce de concaténation.set /a
dans le DOS. Heureusement, la question est pourcmd
... (au moment de cette réponse, le titre de la question était "Boucle de script batch DOS"Je ne sais pas si une réponse comme celle-ci a déjà été soumise, mais vous pouvez essayer quelque chose comme ceci:
La variable% var% augmentera de un jusqu'à ce qu'elle atteigne 100 où le programme sort ensuite qu'il a terminé son exécution. Encore une fois, je ne sais pas si cela a été soumis ou quelque chose comme ça, mais je pense que c'est peut-être le plus compact.
la source
J'utilise ça. C'est à peu près la même chose que les autres, mais c'est juste une autre façon de l'écrire.
la source
La réponse dépend vraiment de votre familiarité avec le batch, si vous n'êtes pas aussi expérimenté, je recommanderais d'incrémenter une variable de boucle:
Mais si vous êtes plus expérimenté avec le batch, je recommanderais que le plus pratique
for /l %loop in (1, 1, 10) do echo %loop
soit le meilleur choix.la source
Voici un modèle de script que j'utiliserai.
Ce que cela fait, c'est quand il démarre, il éteint l'écho puis après cela, il exécute la "boucle", mais à cet endroit, il continue à "boucle" (j'espère que cela aide.)
la source
une boucle parfaitement parfaite
vous pouvez le modifier en remplaçant le 10 de la ligne 5 par un nombre quelconque pour représenter le nombre de fois que vous voulez qu'il boucle.
la source
(MODIFIÉ) Je l'ai fait pour que ça s'arrête après 100 fois
Cela générera 4 nombres aléatoires à chaque seconde 100 secondes. Sortez le "timeout 1 / nobreak> nul" pour le faire aller très vite.
la source
Probablement utiliser goto like
Cela fait une boucle inf (infinie).
la source
infinite
est un peu plus grand que la demande100-200 times
, donc cela ne répond pas à la question.J'ai 2 réponses Méthodes 1: Insérer Javascript dans le lot
(Je ne connais pas grand chose à JavaScript)
Méthode 2: boucle en lot
(Merci FluorescentGreen5)
la source