Мне нужно выполнить команду 100-200 раз, и пока мое исследование показывает, что мне придется либо скопировать / вставить 100 копий этой команды, либо использовать for
цикл, но for
цикл ожидает список элементов, поэтому мне потребуется 200 файлов для работы или список из 200 предметов, побеждающих точку.
Я бы предпочел не писать программу на С и пройти весь процесс документирования, почему мне пришлось написать другую программу для выполнения моей программы в тестовых целях. Модификация самой моей программы тоже не вариант.
Итак, учитывая команду, a
как мне выполнить ее N
раз с помощью пакетного сценария?
Примечание: я не хочу бесконечный цикл
Например, вот как это будет выглядеть в Javascript:
var i;
for (i = 0; i < 100; i++) {
console.log( i );
}
Как бы это выглядело в пакетном скрипте, работающем в Windows?
источник
Ответы:
for /l
твой друг:Начинается с 1, шаг за шагом и заканчивается на 100.
Используйте два
%
s, если это в командном файле(это одна из вещей, которые я действительно ненавижу в сценариях Windows)
Если у вас есть несколько команд для каждой итерации цикла, сделайте это:
или в пакетном файле
Ключ:
/l
обозначает, чтоfor
команда будет работать численно, а не над набором файлов%x
- это переменная циклов(начальное значение, приращение значения, конечное условие [включительно])
источник
%x
- это переменная цикла,/l
(не\l
) означает, что команда for будет работать в числовом режиме, а не с набором файлов.for /l %x in (1, 1, 100) do echo %x
я получаю «х не ожидал».И для перебора файлов каталога:
Вы должны использовать "enableDelayedExpansion" и! FILENAME! вместо $ FILENAME $. Во втором случае DOS будет интерпретировать переменную только один раз (до того, как она войдет в цикл), а не каждый раз, когда программа зацикливается.
источник
Шаблон для простого, но подсчитанного цикла:
Пример: скажите "Hello World!" 5 раз:
Этот пример выведет:
источник
set /p loopcount="How many loops? "
чтобы вы могли запускать его с пользовательским вводом. Это более практично.Вы также можете попробовать это вместо
for
цикла:Это довольно мало, и это то, что я использую все время.
источник
Или вы можете уменьшить / увеличить переменную на количество циклов:
Очевидно, что использование
FOR /L
- это шоссе, и это обратная улица, которая занимает больше времени, но она достигает того же пункта назначения.источник
Вы можете сделать что-то для следующего эффекта, избегая цикла FOR.
источник
Вы можете сделать это без
for
заявления ^. ^:У него есть базовое понимание. Просто проверь это. :П
источник
Очень простой способ реализовать цикл в программировании cmd с использованием меток
источник
DOS не предлагает очень элегантных механизмов для этого, но я думаю, что вы все равно можете кодировать цикл для 100 или 200 итераций с разумными усилиями. Пока нет числового
for
цикла, вы можете использовать символьную строку в качестве «переменной цикла».Код цикла, используя GOTO, и для каждой итерации
SET X=%X%@
добавьте еще один@
знак в переменную окружения X; и чтобы выйти из цикла, сравните значение X со строкой из 100 (или 200)@
знаков.Я никогда не говорил, что это элегантно, но это должно сработать!
источник
/a
Опция вSET
команде будет оценивать численное выражение для правой стороны значения. Смотрите документацию для SET . Нет необходимости делать конкатенационный трюк.set /a
в DOS. К счастью, qeuration дляcmd
... (во время этого ответа заголовок вопроса был "цикл сценария пакетной обработки DOS"Не уверен, что такой ответ уже был отправлен, но вы можете попробовать что-то вроде этого:
Переменная% var% будет увеличиваться на единицу, пока не достигнет 100, после чего программа выведет, что она завершила выполнение. Опять же, не уверен, было ли это представлено или что-то подобное, но я думаю, что это может быть самым компактным.
источник
Я использую это. Это примерно то же самое, что и другие, но это просто еще один способ написать это.
источник
Ответ на самом деле зависит от того, насколько вы знакомы с пакетным режимом. Если у вас нет такого опыта, я бы порекомендовал увеличить переменную цикла:
Но если вы более опытны с партией, я бы порекомендовал, чем практичнее
for /l %loop in (1, 1, 10) do echo %loop
, тем лучше.источник
Вот шаблон сценария, который я буду использовать.
То, что он делает, это когда он запускается, он выключает эхо, затем после этого он запускает «Петлю», но в этом месте он продолжает идти в «Петлю» (надеюсь, это помогает.)
источник
совершенно безупречная петля
Вы можете отредактировать его, изменив число 10 в строке 5 на любое число, чтобы указать, сколько раз вы хотите, чтобы оно повторялось.
источник
(Отредактировано) Я сделал это так, что он останавливается после 100 раз
Это сгенерирует 4 случайных числа за 1 секунду 100 раз. Уберите «timeout 1 / nobreak> nul», чтобы он работал очень быстро.
источник
Возможно использовать Goto как
Это делает inf (бесконечный) цикл.
источник
infinite
немного больше, чем запрошено100-200 times
, так что это не отвечает на вопрос.У меня есть 2 ответа Методы 1: Вставьте JavaScript в пакетном режиме
(Я не знаю много о JavaScript)
Способ 2: цикл в партии
(Спасибо FluorescentGreen5)
источник