Répéter un goto seulement 15 fois

0
echo off
:abc
Echo ^ text ^ >> C:/files/text_%random%.txt
goto abc

Comment je fais les goto15 fois seulement?

robinCTS
la source

Réponses:

3

Au lieu d'utiliser gotoplusieurs fois, vous devriez utiliser une forboucle .

Ici, vous pouvez spécifier que la boucle doit être exécutée 15 fois.

echo off 
SETLOCAL ENABLEDELAYEDEXPANSION
for /L %%i in (1,1,15) do (Echo ^ text ^ >> C:/files/text_!random!.txt)

La variable %%isera équivalente à 1, 2,…, mais ne sera pas utilisée dans la boucle.

Akina
la source
Akina, il serait bon que votre réponse ne soit pas simplement un morceau de code, mais que vous expliquiez ce que vous avez fait pour vous débarrasser des gotodéclarations et pourquoi votre réponse est meilleure.
Slhck
@slhck Je résous la tâche plutôt que de modifier la solution de l'auteur. Ce n'est pas une tâche d'apprentissage, utiliser goto n'est pas un dogme. Je pense que oui ...
Akina
2
Ce que je voulais dire c'est que, sur Stack Exchange, nous préférons les réponses qui donnent une petite explication plutôt que de simplement poster un morceau de code. Si quelqu'un trouve votre réponse, il peut en tirer des leçons (pourquoi une forboucle est-elle meilleure dans ce cas?).
slhck
@slhck L'anglais n'est pas ma langue maternelle, il est donc difficile pour moi d'expliquer de telles choses aux novices. Lorsque j'essaie de le faire, j'obtiens l'explication avec un «niveau spécialiste» - mais ces spécialistes n'ont aucun problème à comprendre.
Akina
J'espère que cela vous sera utile / ref .. (:
p._phidot_
0

Comment faire le goto seulement 15 fois?

FOR /L %%v in (start, step, end) do *something*fera ce dont vous avez besoin, mais si vous aimez utiliser GOTO pour cette tâche, vous pouvez d’abord définir une variable égale à une valeur de départ, puis l’incrémenter (ou la décrémenter) chaque fois que l’opération répétée est effectuée, en testant chaque fois si elle a atteint la valeur finale. Notez que vous pouvez commencer une echo offligne avec le @symbole pour éviter son écho à la console.

@echo off
set numval=0
REM you can use a variable or else a magic number in the loop
set endval=15
:abc
Echo ^ text ^ >> C:/files/text_%random%.txt
set /a numval +=1
if %numval% lss %endval% goto abc
REM or if %numval% lss 15 goto abc
echo Done 15 times
Michael Harvey
la source