Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1 / 1 / 0
Регистрация: 16.08.2011
Сообщений: 18

Двойной цикл, диапазон переменных во 2-м цикле нужно взять из 1-го

03.06.2015, 14:59. Показов 2444. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, нужно создать 2 цикла, необходимо чтобы во 2 цикле значения начинались с переменной первого цикла, увеличенной на 2. Задача вроде простая, но код не работает. Заранее спасибо за помощь.




Bash
1
2
3
4
5
6
7
for /l %%b in (2005, 1, 2013) do ( 
set /a ipd=(%%b + 2)
for /l %%c in (%ipd%, 1, 2014) do (
echo %%c
pause
)
)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.06.2015, 14:59
Ответы с готовыми решениями:

Двойной цикл: нужно получить первое значение если выполнится условие
есть двойной цикл и нужно получить первое значение если выполнится это условие if (!field->IsWin()) получаем значения и останавливаем...

Цикл присвоения переменной значений выражений, содержащих значения других задаваемых в этом цикле переменных
Добрый вечер, уважаемые камрады! Помогите решить следующую проблему: Нужно предоставлять отчетность по активным учетным записям...

Как в rand указать двойной диапазон генерации?
Как в rand указать двойной диапазон генерации? Например чтобы числа генерировались от 5 до 10 и от 15 до 20 одновременно.

8
 Аватар для ComSpec
3462 / 2000 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
03.06.2015, 15:17
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
 
setlocal enabledelayedexpansion
for /l %%b in (2005, 1, 2013) do ( 
 set /a ipd=%%b + 2
 for /l %%c in (!ipd!, 1, 2014) do (
  echo %%c
 )
 echo.
)
 
pause
2
1 / 1 / 0
Регистрация: 16.08.2011
Сообщений: 18
03.06.2015, 15:26  [ТС]
Огромное спасибо!
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
04.06.2015, 23:51
Или

Windows Batch file
1
2
3
4
5
6
7
@echo off
 
for /l %%b in (2005, 1, 2013) do ( 
 set /a ipd=%%b + 2
 call cmd /c for /l %%%%c in ^(%%ipd%%, 1, 2014^) do @echo %%%%c
 echo.
)
Только быстрее ему от этого не будет.

Добавлено через 13 минут
Гы:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
SetLocal
 
set low=2005
set  up=2013
set max=2014
set delta=2
 
set /a d2= up - low + delta
 
for /l %%b in (2005, 1, 2013) do ( 
 for /l %%a in (%delta%, 1, %d2%) do (
  for /f %%c in ('set /a %%b + %%a') do if %%c LEQ %max% echo %%c
 )
 echo.
)
pause
Блин, все равно медленнее ))
1
 Аватар для ComSpec
3462 / 2000 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
05.06.2015, 17:30
Dragokas, вот так быстрей всего:

Windows Batch file
1
@cmd/v/c "for /l %%b in (2005, 1, 2013) do @>nul set/a ipd=%%b + 2& (for /l %%c in (!ipd!, 1, 2014) do @echo %%c)& echo."& pause
!

А если честно, то уступает по средней скорости первому варианту совсем немного (в некоторых тестах было и усреднённое превосходство).


Создал пять пакетных файлов:

"1.bat" (

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
 
setlocal enabledelayedexpansion
for /l %%b in (2005, 1, 2013) do ( 
 set /a ipd=%%b + 2
 for /l %%c in (!ipd!, 1, 2014) do (
  echo %%c
 )
 echo.
)
 
exit/b 0
);

"2.bat" (

Windows Batch file
1
2
3
4
5
6
7
8
9
@echo off
 
for /l %%b in (2005, 1, 2013) do ( 
 set /a ipd=%%b + 2
 call cmd /c for /l %%%%c in ^(%%ipd%%, 1, 2014^) do @echo %%%%c
 echo.
)
 
exit/b 0
);

"3.bat" (

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
setlocal
 
set low=2005
set  up=2013
set max=2014
set delta=2
 
set /a d2= up - low + delta
 
for /l %%b in (2005, 1, 2013) do ( 
 for /l %%a in (%delta%, 1, %d2%) do (
  for /f %%c in ('set /a %%b + %%a') do if %%c LEQ %max% echo %%c
 )
 echo.
)
 
endlocal
exit/b 0
);

"4.bat" (

Windows Batch file
1
2
3
4
5
6
7
8
9
@echo off
 
for /l %%b in (2005, 1, 2013) do ( 
 set/a ipd=%%b + 2
 cmd/v/c "for /l %%c in (!ipd!, 1, 2014) do @echo %%c"
 echo.
)
 
exit/b 0
);

"5.bat" (

Windows Batch file
1
@cmd/v/c "for /l %%b in (2005, 1, 2013) do @>nul set/a ipd=%%b + 2& (for /l %%c in (!ipd!, 1, 2014) do @echo %%c)& echo."& exit/b 0
).


Создал пакетный файл для определения средней скорости их работы (для десяти запусков каждого из пяти) с таким кодом:

Windows Batch file
1
@powershell "'1.bat','2.bat','3.bat','4.bat','5.bat'|%%{($x=$_);1..10|%%{Measure-Command{cmd /c $x}}|measure -pr TotalMilliseconds -a -s -mi -ma|Out-String}"& pause>nul
.


Получил результат:

1.bat


Count : 10
Average : 71,76819
Sum : 717,6819
Maximum : 155,4896
Minimum : 38,3139
Property : TotalMilliseconds




2.bat


Count : 10
Average : 260,17517
Sum : 2601,7517
Maximum : 459,2509
Minimum : 199,5439
Property : TotalMilliseconds




3.bat


Count : 10
Average : 1603,15551
Sum : 16031,5551
Maximum : 2238,769
Minimum : 1269,2889
Property : TotalMilliseconds




4.bat


Count : 10
Average : 200,58868
Sum : 2005,8868
Maximum : 351,2698
Minimum : 148,4191
Property : TotalMilliseconds




5.bat


Count : 10
Average : 88,75901
Sum : 887,5901
Maximum : 243,1965
Minimum : 56,4091
Property : TotalMilliseconds



.
2
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
05.06.2015, 17:39
Интересное наблюдение.
Похоже, что разбор однострочника "тяжелее", как результат хуже оптимизация выполнения.
Можешь повторить тест, переименовав файлы в *.cmd ?
1
 Аватар для ComSpec
3462 / 2000 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
05.06.2015, 19:03
Dragokas, ты в чём-то подозреваешь ".bat"? Или, наоборот, ".cmd"?

Проверил. Результат аналогичен, хотя некая тенденция к ускорению работы наблюдается, но насколько она репрезентативна, не могу судить.

Код тестирующего пакетного файла:

Windows Batch file
1
@powershell "'1.cmd','2.cmd','3.cmd','4.cmd','5.cmd'|%%{($x=$_);1..10|%%{Measure-Command{cmd /c $x}}|measure -pr TotalMilliseconds -a -s -mi -ma|Out-String}"& pause>nul
.

Результат:

1.cmd


Count : 10
Average : 50,88238
Sum : 508,8238
Maximum : 96,7825
Minimum : 37,8246
Property : TotalMilliseconds




2.cmd


Count : 10
Average : 265,0264
Sum : 2650,264
Maximum : 424,191
Minimum : 206,6347
Property : TotalMilliseconds




3.cmd


Count : 10
Average : 1671,02022
Sum : 16710,2022
Maximum : 2262,0247
Minimum : 1157,318
Property : TotalMilliseconds




4.cmd


Count : 10
Average : 228,21053
Sum : 2282,1053
Maximum : 356,8109
Minimum : 184,7615
Property : TotalMilliseconds




5.cmd


Count : 10
Average : 77,60385
Sum : 776,0385
Maximum : 222,2191
Minimum : 46,6884
Property : TotalMilliseconds



.
1
⁞ ★☭ Mad Max ☭★ ⁞
279 / 84 / 12
Регистрация: 04.09.2013
Сообщений: 187
05.06.2015, 19:17
У меня вот что получилось
1.bat                     1.cmd
Count   10                Count    10
Average 14,06775          Average  14,57 509
Sum     140,6775          Sum      145,7 509
Maximum 18,2468           Maximum  19,18 72
Minimum 12,4471           Minimum  12,52 57
PropertyTotalMilliseconds Property Total Milliseconds

2.bat                     2.cmd
Count   10                Count    10
Average 63,75606          Average  64,21 92
Sum     637,5606          Sum      642,1 92
Maximum 65,7485           Maximum  67,16 3
Minimum 61,5328           Minimum  61,77 92
PropertyTotalMilliseconds Property Total Milliseconds

3.bat                     3.cmd
Count   10                Count    10
Average 429,67102         Average  426,8 0119
Sum     4296,7102         Sum      4268, 0119
Maximum 447,716           Maximum  441,7 414
Minimum 423,9156          Minimum  421,5 357
PropertyTotalMilliseconds Property Total Milliseconds

4.bat                     4.cmd
Count   10                Count    10
Average 65,19306          Average  68,45 516
Sum     651,9306          Sum      684,5 516
Maximum 78,8435           Maximum  114,0 218
Minimum 62,7597           Minimum  62,53 24
PropertyTotalMilliseconds Property Total Milliseconds

5.bat                     5.cmd
Count   10                Count    10
Average 19,57122          Average  19,36 846
Sum     195,7122          Sum      193,6 846
Maximum 20,7056           Maximum  20,24 17
Minimum 18,3056           Minimum  18,16 38
PropertyTotalMilliseconds Property Total Milliseconds
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18031 / 7734 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
05.06.2015, 22:11
ComSpec, судя из данных тестов (я проверял у себя) различий нет.
У тебя разница из-за кеширования процессором операций вычисления при повторном запуске.

bat и cmd по-разном интерпретируются.
Примерно так: для cmd - читается построчно, а для bat - каждая строка читается от начала файла как если бы
в команду for подставлять увеличивающийся skip для чтения одной строки.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.06.2015, 22:11
Помогаю со студенческими работами здесь

Цикл foreach заменить на двойной цикл for
int mas = new int; Random Gen = new Random(); for (int i = 0; i < mas.GetLength(0); i++) for...

Не получается взять двойной интеграл
\int_{-\infty }^{+\infty }\int_{-\infty }^{+\infty }x\frac{1}{(x^2+y^2+1)^3}dxdy

Условие в цикле или цикл в цикле
При вводе данных в textbox2(Стоимость) и textbox1(Срок) и нажатии на кнопку формируется таблица DataGridView2. Сначала сумма вычисляется...

Как взять диапазон множества?
Начал изучать LINQ и вот возник вопрос. Существует ли способ собрать все элементы множества (массив, лист), выбираемые только потому, что...

Заполнить диапазон числами рассчитанными в цикле
Здравствуйте, нужна помощь в оптимизации вот такого исходного кода . Есть конкретные диапазоны данных на одном листе. В данном случае...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru