Повторение goto только 15 раз

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

Как мне сделать gotoтолько 15 раз?

robinCTS
источник

Ответы:

3

Вместо того, чтобы использовать gotoнесколько раз, вы должны использовать forцикл .

Здесь вы можете указать, что цикл должен выполняться 15 раз.

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

Переменная %%iбудет эквивалентна 1, 2,…, но она не будет использоваться внутри цикла.

Акина
источник
Акина, было бы хорошо, если бы твой ответ был не просто фрагментом кода, а если бы ты объяснил, что ты сделал, чтобы избавиться от gotoутверждений, и почему твой ответ лучше.
Slhck
@slhck Я решаю задачу, а не редактирую решение автора. Это не учебная задача, использование goto - это не догма. Я так думаю ...
Акина
2
Я имел в виду, что на Stack Exchange мы предпочитаем ответы, которые дают небольшое объяснение, а не просто публикуют фрагмент кода. Если кому-то случится найти ваш ответ, он может извлечь из него что-то полезное (то есть, почему forцикл лучше в этом случае?).
Slhck
@slhck Английский не мой родной язык, поэтому мне сложно объяснить такие вещи новичкам. Когда я пытаюсь это сделать, я получаю объяснение на «уровне специалиста», но у этих специалистов нет проблем для понимания.
Акина
Надеюсь, что это поможет / ссылка какой-то .. (:
p._phidot_
0

Как мне сделать goto только 15 раз?

FOR /L %%v in (start, step, end) do *something*будет делать то, что вам нужно, но если вам нравится использовать GOTO для этой задачи, вы можете сначала установить переменную, равную начальному значению, а затем увеличивать (или уменьшать) ее при каждом повторении операции, проверяя каждый раз, когда она достигла конечное значение. Обратите внимание, что вы можете начать echo offстроку с @символа, чтобы предотвратить его вывод на консоль.

@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
Майкл Харви
источник