1

Тема: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

Нужен бесконечный цикл в теле for

на подобие for /l - но нескончаемый и в то же время "интерактивный", т.е. выполняющий в итерации последовательно все действия

Я конечно далек от мысли... (с)

2

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

дико извиняюсь за тупость

for /l %x (0,0,0) do echo %x
Я конечно далек от мысли... (с)

3

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

Интересно. А какова была цель-то? И почему именно «for»?

4

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

start "" /i /b cmd /q /v:on /c "for /l %x in (0,0,0) do (ping -n 1 -w 1000 0.0.0.1 > nul & title !date! !time!)"
Я конечно далек от мысли... (с)

5

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

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

6 (изменено: smaharbA, 2012-09-05 00:52:09)

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

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

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

Я конечно далек от мысли... (с)

7

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

smaharbA, спасибо, ясно. Я так и предполагал. У меня, правда, эти часы «стоят» , потому решил уточнить.

Update: Вот так «пошли»:

cmd.exe /q /v:on /c "for /l %x in (0,0,0) do (ping -n 1 -w 1000 127.0.0.1> nul & title !date! !time!)"

8

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

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

Я конечно далек от мысли... (с)

9

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

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

10 (изменено: smaharbA, 2012-09-05 08:06:42)

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

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

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

Я конечно далек от мысли... (с)

11

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

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

12

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

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

13 (изменено: wisgest, 2013-01-07 02:37:43)

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

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

start "" /i /b cmd /q /v:on /c "for /l %x in (0,0,0) do (ping -n 1 -w 1000 0.0.0.1 > nul & title ^!date^! ^!time^!)"

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

start "" /i /b cmd /q /c "for /l %x in (0,0,0) do (ping -n 1 -w 1000 0.0.0.1 > nul & call title ^%date^% ^%time^%)"

)

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

14

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

бесконечность

Я конечно далек от мысли... (с)

15

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

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

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

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

16

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

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

Не грузит.

А каперский - как вытекающее.

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

17

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

> Не грузит

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

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

18

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

Aскет пишет:

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

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

Aскет пишет:

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

Ждём-с.

19 (изменено: Aскет, 2013-01-11 06:27:56)

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

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

>Ждём-с.

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

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

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

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

дэль.

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

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

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

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

22 (изменено: wisgest, 2026-02-08 04:22:01)

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

Aскет пишет:

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

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

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

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

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

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

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

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

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

24 (изменено: wisgest, 2026-02-08 04:24:15)

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

[Удалено несущественное.]

Aскет пишет:

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

START/W/B APP.EXE — если APP.EXE консольное, что-то не вижу преимуществ перед простым вызовом APP.EXE (может, изменение приоритета?).
START/W/B INNER_COMMAND — это на самом деле
START/W/B %ComSpec% /K  INNER_COMMAND — т.е. никуда не годится.

25 (изменено: Aскет, 2013-01-11 19:29:51)

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

Эко Вас занесло..."start - для гуи, Гуя, хотя нет. Куя. Но тут воще хоть и куя, но ведь cmd с ключок /К. Не, не годится".
Суть концепта (гл. половину) я показал.
Не нужно пытаться опровергать - всё работает.
От вас только ком.строка.

Из крайности в крайность, То "блеф", то "start не тянет", то перебор попыток опровержения...
Это даже не "If-Then-Else", А самый натуральный "Do Loop без условия выхода цикла".

Завязывайте с демагогией, рефрейминг - это не Ваше. )

p.s. за-дер-ж-ка...

26

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

debug.exe далее хоть 15 мс, меньшего не получите, получите в любой момент до 100 нс точность, но цикл с меньшим периодом нет

Я конечно далек от мысли... (с)

27 (изменено: Aскет, 2013-01-12 05:13:02)

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

После покажу, "я наслаждаюсь сладострастным трепетом ожидания".
Я для того и положил концепт, а не конкретную реализацию;
Объяснил принцип действия и предложил мозговой штурм, дабы "Разроботчеки" перестали подражать и копировать, а попробовали бы разработать, предложили свои варианты "затяжной команды" (в тендеме с start/b/w).

Например та же:
DIR %windir%/system32>nul
даёт неплохую задержку;
даже множественный CALL пустой процедуры.
Но они нагружают ресурсы,так что нужно подключить смекалку. ))

28

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

> debug.exe
smahabrA, это через INT-прерывание?

29

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

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


:sleep (ms)
set/a n=%1-370
echo %time%
start /min/w mshta "javascript:setTimeout('close()',%n%)"
echo %time%
exit/b

Только суть, без колдунства с невидимыми окнами и иже с ним.

30 (изменено: wisgest, 2013-01-18 13:21:14)

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

Я разочарован. Признаюсь, я ожидал чего-то большего чем очевидные WScript.Sleep() или window.setTimeout(), которых просто постеснялся упоминать. Мне кажется, Aскет, судя по ранее им сказанному

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

первоначально имел в виду другое решение, но обнаружил в нём изъян и выложил первое попавшее под руку.


Если же вернуться к исходной задаче, то лучше будет составить скрипт наподобие «VBScript: Как поменять заголовок консольного окна?» и вызвать его через START /B CSCRIPT …

31 (изменено: Aскет, 2013-01-18 14:44:56)

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

>Мне кажется, судя по ранее сказанному...

Нет, Аскет ранее лишь опровергал вашу неверную и основанную на банальной логике т.з. по поводу команды start (дабы в конец вас запутать, да-да)

> очевидные window.setTimeout
Судя по всему (сами так ничего и не предложили), wisgest не только постеснялся, но просто не додумался. )
Да и факт налицо - работает.

Важна точность задержки и отсутствие нагрузки.

>cscript
Это уже из разряда комбинашек. Далековато оно от православного и расово-чистого BATch.

32

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

Aскет пишет:

Нет, Аскет ранее лишь опровергал вашу неверную и основанную на банальной логике т.з. по поводу команды start

Которая оказалось верной.

Aскет пишет:

(дабы в конец вас запутать, да-да)

Как вы к нам, так будем и мы к вам.

Aскет пишет:

Важна точность задержки и отсутствие нагрузки.

Точность? Опережение где-то на пол-секунды при 3-секундной задержке. Думаю, она будет меняться от машины к машине.
Отсутствие нагрузки?

for /l %i in () do @start /min/w mshta "javascript:setTimeout('close()',200)"

— где-то 40% загрузки одноядерного ЦП.
Сравним

// eval.js
eval(unescape(WScript.Arguments.Item(0)));
for /l %i in () do @cscript //nologo eval.js WScript.Sleep(200)

— около 25%

for /l %i in () do @start /w wscript eval.js WScript.Sleep(200)

— то же самое.

Aскет пишет:

>cscript
Это уже из разряда комбинашек. Далековато оно от православного и расово-чистого BATch

Чем CSCRIPT менее кошерно чем MSHTA или однократное обращение к CScript.EXE — чем многократный вызов ping.EXE?

33

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

>40%
У Вас где-то ошибка. Синтаксическая, но скорее семантическая.
Или Вы опять блефуете?

> Точность?
Ога. У меня при вызове n-370 выдаёт стабильно точную задержку (лишь иногда +/- 4ms) с нагрузкой на ЦП 0%.

>CSCRIPT
Да, чем вызов CSRIPT с доп JS-файлами кошерней портабельного inline-вызова MSHTA?

Вы бы лучше поискали способы обращения к системному таймеру, чем очередной раз пытать счастье в попытках "изфекаливания оппонента".

34

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

Aскет пишет:

У меня при вызове n-370 выдаёт стабильно точную задержку (лишь иногда +/- 4ms) с нагрузкой на ЦП 0%.

А у меня при n-100 и то, если n делится на 1000 (иначе отклонение больше).

Нагрузка 0% будет при большой задержке, но не в момент запуска MSHTA (или чего угодно), что я и показал вызвав этот трюк в цикле с малой задержкой (без каких либо семантических или синтаксических ошибок),
заодно ответив на вопрос:

Aскет пишет:

>CSCRIPT
Да, чем вызов CSRIPT с доп JS-файлами кошерней портабельного inline-вызова MSHTA?

— Большей «лёгкостью на подъём». А от использования дополнительного файла портабельность страдает очень несущественно.

Aскет пишет:

Вы бы лучше поискали способы обращения к системному таймеру, чем очередной раз пытать счастье в попытках "изфекаливания оппонента".

Где уж нам до вас.

35 (изменено: Aскет, 2013-01-19 03:26:45)

Re: CMD/BAT: Бесконечный цикл в for без меток (Идеи ?)

> если n делится на 1000
Ну а зачастую именно так и требуется.
Минимальный порог кстати ~42ms (с параметром 0).

> Где уж нам до вас.
Ну вы хотя бы пробуйте, старайтесь.
Я понимаю что я как "недостижимый Эверест" и Полярная звезда, но ведь есть к чему стремиться. Не опускайте рук.
Любая попытка к творчеству и исследованиям в разы полезней любых излияний унылого скепсиса и самой отборной копипасты.