Как сделать цикл в cmd

Добавил пользователь Владимир З.
Обновлено: 19.09.2024

Мне было интересно, возможно ли это? Я не знаком с использованием командной строки windows, но я должен использовать ее для проекта, над которым я работаю. У меня есть несколько файлов, для которых мне нужно выполнить функцию для каждого. Я привык работать с python, но, очевидно, это немного другое, поэтому я надеялся на некоторую помощь.

в основном мне нужен цикл for, чтобы перебирать 17 файлов в папке, выполнять функцию на каждом (это использует конкретное программное обеспечение, которое у меня есть здесь для проект), а затем это выведет файл с уникальным именем (функция обычно требует от меня указать имя выходного файла), я бы всасывал его и просто делал это вручную для каждого из 17, но в основном он создает базу данных файла, а затем сравнивает ее с каждым из 17. Однако его нужно повторить несколько сотен раз. Использование цикла for может сэкономить мне дни работы.

интерпретатор командной строки действительно имеет конструкцию FOR, которую можно использовать из командной строки или из пакетного файла.

для вашей цели, вы, вероятно, хотите что-то вроде:

что приведет к имени каждого файла с расширением *.ext в текущем каталоге передается в my-function (которая может, например, быть другой .Bat-файл.)

на (*.ext) часть "filespec", и довольно Гибка С тем, как вы укажите наборы файлов. Например, вы можете сделать:

для выполнения операции в другом каталоге.

есть множество вариантов для filespec и для в целом. См.

из командной строки для получения дополнительных сведений.

Это может помочь вам найти то, что вы ищете. сценарий цикла

мой ответ таков:

первый набор команд в циклах меток запуска до тех пор, пока переменная %var% не достигнет 100. Как только это произойдет, он предупредит вас и позволит вам выйти. Этот код может быть адаптирован к вашим потребностям путем изменения 100 на 17 и ввода кода или с помощью команды вызова, за которой следует путь пакетного файла (Shift + щелкните правой кнопкой мыши на файле и выберите "Копировать как путь"), где помещается комментарий.

для выполнения циклов независимо от файлов или каталогов см. e. г. цикл пакетного сценария ,. Кстати. MS help также должна помочь (но кто там копает)

Это в основном то, что я хочу в пакетном файле. Я хочу иметь возможность повторно запускать "Do Stuff" всякий раз, когда я нажимаю любую клавишу, чтобы пройти "Pause".

Похоже, в пакете доступны только for циклы, а в пакете нет while циклов. Как мне тогда создать бесконечный цикл?

Как насчет использования старого доброго (?) goto ?

См. Также это более полезный пример.

Вот пример использования цикла:

Еще один лучший способ сделать это:

Таким образом, вы тоже можете позаботиться об ошибках

Прочитать help GOTO

Действительно бесконечный цикл, считая от 1 до 10 с шагом 0.
Вам нужно бесконечное или большее количество шагов, чтобы достичь 10.

Это может быть полезно, если вам нужен действительно бесконечный цикл, поскольку он намного быстрее, чем версия goto :loop , потому что цикл for полностью кэшируется один раз при запуске.

Неограниченный цикл в однострочной команде для использования в окнах cmd :


Здорово! Как сотворить бесконечный цикл в bat-файле?
Я конечно понимаю что вопрос не гениальный,но всё равно как это сделать?

:begin
net send userIp Я тебя еще не достал?
goto begin

бусконечный цикл в бат файле как в pascal
можешь использовать метки как из цифр так из символов лат. алфавита.
например..
start:
.
goto start;
27:
.
goto 27;
label0:
.
goto label0;

Клево.
А если с нет сендом то лучше так:
1:
NET SEND 127.0.0.1 Это твои компутер.Купи или наиди в инете справочник по командам MS-DOS
GOTO 1

4 Ответ от smaharbA 2012-09-05 00:41:32

5 Ответ от alexii 2012-09-05 00:47:57

smaharbA, всё равно не понятно. Поясните словами, пожалуйста.

6 Ответ от smaharbA 2012-09-05 00:50:57 (изменено: smaharbA, 2012-09-05 00:52:09)


часы в заголовке командной строки, можно конечно и стартануть пакетник, но подумалось как из самой строки
позырил свои "болванки" пакетников и обнаружил в них for /l %x in (0,0,0)

навеяло увиденной темой про powershell и часы в заголовке

7 Ответ от alexii 2012-09-05 01:31:24

8 Ответ от smaharbA 2012-09-05 01:45:38

там суть в start "" /b из командной строки

9 Ответ от alexii 2012-09-05 07:42:01

Шут его знает. В оригинальном виде часы у меня просто замирали в начальном состоянии.

10 Ответ от smaharbA 2012-09-05 08:04:44 (изменено: smaharbA, 2012-09-05 08:06:42)

идея была в том, что бы запустить работающие часы которые не будут препятствовать интерактивной работе
может в каких системах и не отрабатывает

у меня отрабатывает и при запуске в командном интерпретаторе и если запустить в фаре, мигает только в фаре при переходе по каталогам и в момент начала просмотра/редактирования файлов

11 Ответ от Аскет 2012-09-06 03:48:13


Ох ты какой трюк. Работает
Достойно Коллекции.

12 Ответ от Arigato 2012-12-16 21:17:01

  • Arigato
  • Разработчик
  • Неактивен

Когда запускаю эти часы, то avp.exe (Касперский) загружает процессор почти на 50%, закрываю окно консоли с часами, загрузка падает до 0%. Странная реакция.

13 Ответ от wisgest 2013-01-07 02:23:31 (изменено: wisgest, 2013-01-07 02:37:43)

  • wisgest
  • Разработчик
  • Неактивен











У меня эти часы стояли, но лишь теперь понял почему. Возможно, у alexii та же причина. Просто у меня CMD.EXE сразу запускается с ключом /V (через ярлык), поэтому текущее значение !date! !time! подставлялось в командную строку уже при запуске. А вот, если экранировать восклицательные знаки

то работает независимо от того, была включена перед этим отложенная подстановка или нет.
(Ну, или так

Можно и в Коллекцию.

14 Ответ от smaharbA 2013-01-07 20:49:35

15 Ответ от Aскет 2013-01-09 03:14:48

Arigato, грузит систему - пинг [самопинг?] в качестве паузы (кстати основательно).
А каперский - как вытекающее.

Писал я как-то для замены этих неудобств процедуру - концептуальную фишку (чуть более точнее и с градацией до милисекунд) в качестве паузы.

Надо будет попозже в коллекцию закинуть.

16 Ответ от alexii 2013-01-09 06:37:16

Arigato, грузит систему - пинг [самопинг?] в качестве паузы (кстати основательно).

Не вытекающее. Это и есть причина.

17 Ответ от Aскет 2013-01-09 10:05:11

Это когда как - смотря в какой ситуации и на какой машинке.


А причина или следствие, кто его знает.

18 Ответ от wisgest 2013-01-10 05:29:38

  • wisgest
  • Разработчик
  • Неактивен











грузит систему - пинг [самопинг?] в качестве паузы (кстати основательно).

0-2% — это основательно?

Писал я как-то для замены этих неудобств процедуру - концептуальную фишку (чуть более точнее и с градацией до милисекунд) в качестве паузы.

19 Ответ от Aскет 2013-01-10 07:34:22 (изменено: Aскет, 2013-01-11 06:27:56)

Бывает что куллер процессора начинает изрядно гудеть (вероятно - угнетает фаервол) и доставляет неудобства.


Чтобы Вы в очередной раз, в порыве конгнитивного диссонанса и соблимированной злобы (накопленной за пол-года мучений от борьбы с моей грандиозной эНЛПятиной) обгадили мой пусть даже высакоинтеллектуальный, пусть ДэХаЕшный и сверхконцептуальный, но всё же "банный стыд"?

Зачем же. Да и прав что-то нехватает чтоб в Коллекцию "гадить". ))

20 Ответ от Aскет 2013-01-10 07:51:02 (изменено: Aскет, 2013-01-10 07:59:55)

21 Ответ от Aскет 2013-01-10 07:53:51 (изменено: Aскет, 2013-01-10 08:03:53)


А давайте лучше устроим конкурс (тест Айзека)) - я поясняю суть концепта, а вы предложите свои варианты решения второй части задачи. А-ля "мозговой штурм".
Думаю наберётся несколько решений. Может у кого-то будет и пооптимальнее и поинтереснее чем у меня.

Суть проста: start /wait . .
Остаётся лишь подобрать подходящую комбинацию команд, которая отрабатывалась бы за определённое время (1s. или N-ms), но главное чтобы была стабильность и без нагрузки на ресурсы.
Варианты?

22 Ответ от wisgest 2013-01-10 17:03:40 (изменено: wisgest, 2013-01-10 17:13:38)

  • wisgest
  • Разработчик
  • Неактивен











в порыве конгнитивного диссонанса и соблимированной злобы, накопленной за пол-года мучений моей грандиознейшой эНэЛПятиной, обгадили мой пусть даже высакоинтеллектуальный, ДэХаЕшный

В очередной раз вы попытались скомпрометировать грандиозного Аскета и настроить против него участников. Чтож, Вам повезло - повёлся даже модератор, питающий ко мне непрофессианальную злобу.
Вот вы то и есть настоящий мистификатор и провокатор.

— как будто мои намерения оправдали бы твои ошибки и флуд в Коллекции.

Да и прав не хватает чтоб в Коллекцию "гадить".

Правильно, не надо гадить. Пиши здесь, мы посмотрим.

Суть проста: start /wait . .
… но главное чтобы была стабильность и без нагрузки на ресурсы.

START /WAIT нужно, если вызывается неконсольное приложение, значит — внешняя программа; а это всё равно обращение к диску, т.е. нагрузка на ресурсы.

Но, думаю, ты просто блефуешь.

23 Ответ от Aскет 2013-01-11 07:09:23 (изменено: Aскет, 2013-01-11 07:28:58)


Ну вот, wisgest опять завалил тест Айскета уже с первой попытки, даже не начав его решать.


> . если вызывается неконсольное приложение.
Ну с такой железной логикой ("If-Then-Else") очень сложно поспорить.


> значит - внешняя программа
Вообще говоря, командный интерпретатор cmd.exe, за исключением скудного набора встроенных ф-ций for,if,call. основан на вызове внешних программ (т.е. команд). Это так, на заметку.

p.s. start/w/b echo Я НЕвнешнее, ниразу НЕнеконсольное app.

24 Ответ от wisgest 2013-01-11 16:30:47

  • wisgest
  • Разработчик
  • Неактивен











start/w/b echo Я НЕвнешнее, ниразу НЕнеконсольное app.

Читайте также: