С Новым годом! Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/55: Рейтинг темы: голосов - 55, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 24

Создать пакетный файл, который выводит на экран последовательность чисел от 1 до 249 (MS-DOS 6.22)

30.04.2013, 08:09. Показов 10352. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Прошу помощи! Есть задача: создать пакетный файл который выводит на экран последовательность чисел от 1 до 249.
Условия: среда разработки - MS-DOS 6.22 (не командная строка win).
Цикл FOR с параметром /L не работает.
Команда SET с параметром /A не работает.
Прошу указать направление в котором копать.
Как я понимаю надо каким-то способом организовать счетчик и цикл, и выводить на экран значение этого счетчика в каждой итерации.
Использую virtualbox с установленным дистрибутивом MS-DOS 6.22
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.04.2013, 08:09
Ответы с готовыми решениями:

Создать метод, который выводит на экран максимальное из введенных n чисел
Написать программу, которая: 1) вводит с консоли число n> 0 2) затем вводит n чисел с консоли 3) создать метод, который выводит на...

Создать файл сценария, который выводит на экран заданные сведения о системе
Пожалуйста помогите создать файл сценария, который выводит на экран следующие сведения о системе: °первый локальный диск(С); °поколение...

Создать пакетный файл, который проверяет существование файла...
Помогите пожалуйста! Совсем не понимаю Bat-файлы......Необходимо создать пакетный файл, который проверяет существование файла и присваивает...

19
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
30.04.2013, 12:16
Какие ещё условия есть? Проще всего заранее забить строку в файл и вывести его...
0
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 24
30.04.2013, 12:27  [ТС]
В том то и дело что нельзя использовать сторонние файлы. Только пакетник. Так сказать задача на изобретательность.
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
30.04.2013, 12:43
Bash
1
2
3
4
echo.1
echo.2
...
echo.243
Других вариантов пока нет
1
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 24
30.04.2013, 12:48  [ТС]
Я тоже додумался до такого варианта
Но есть альтернативный вариант (точно есть!).
Эта задача не для практического применения, а для развития мозга
Число 249 взято для примера. А если надо вывести 10 000 значений? В этом вся суть.
Но все равно спасибо за вариант решения.
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
30.04.2013, 14:13
Еще приходило в голову использовать что-то системное, где есть последовательность...

...А сделал так V
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
if exist file.txt (erase file.txt)
:again
<nul set /p x=#>>file.txt
for %%A IN (file.txt) DO (
 echo.%%~zA
 if %%~zA GEQ 249 (goto :out)
)
goto :again
:out
erase file.txt
pause>nul
exit /b
Протестил...
Работает!

Цитата Сообщение от latish86 Посмотреть сообщение
Как я понимаю надо каким-то способом организовать счетчик и цикл, и выводить на экран значение этого счетчика в каждой итерации.
Я в качестве счетчика использовал файл, добисывая в него новые символы.
Размер файла в байтах - %%~zA
0
1748 / 353 / 41
Регистрация: 15.10.2012
Сообщений: 550
30.04.2013, 16:01
Примерно так, для трёхзначных чисел
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@echo off
if %1 == /1 goto _1
if %1 == /2 goto _2
if %1 == /e goto _e
 
for %%i in ( 0 1 2 3 4 5 6 7 8 9 ) do call %0 /1 %1 %%i
goto end
 
:_1
if %3 == 0 goto _1_0
for %%j in ( 0 1 2 3 4 5 6 7 8 9 ) do call %0 /2 %2 %3%%j
goto end
 
:_1_0
for %%j in ( 0 1 2 3 4 5 6 7 8 9 ) do call %0 /2 %2 %%j
goto end
 
:_2
if %3 == 0 goto _2_0
for %%k in ( 0 1 2 3 4 5 6 7 8 9 ) do call %0 /e %2 %3%%k
goto end
 
:_2_0
for %%k in ( 0 1 2 3 4 5 6 7 8 9 ) do call %0 /e %2 %%k
goto end
 
:_e
echo %3
if %2 == %3 exit
 
:end
Расширение батника должно быть .bat (не .cmd). Первый параметр - верхнее значение. Запускать из command.com, напрмер:
Code
1
command.com /c cnt.bat 123
Добавлено через 5 минут
Цитата Сообщение от FraidZZ Посмотреть сообщение
Работает!
Для DOS НЕ работает.
0
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 24
30.04.2013, 16:23  [ТС]
Цитата Сообщение от FraidZZ Посмотреть сообщение
Еще приходило в голову использовать что-то системное, где есть последовательность...

...А сделал так V
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
if exist file.txt (erase file.txt)
:again
<nul set /p x=#>>file.txt
for %%A IN (file.txt) DO (
 echo.%%~zA
 if %%~zA GEQ 249 (goto :out)
)
goto :again
:out
erase file.txt
pause>nul
exit /b
Протестил...
Работает!


Я в качестве счетчика использовал файл, добисывая в него новые символы.
Размер файла в байтах - %%~zA
Тестировали в командной строке cmd?
На виртуалке не получается запустить, в винде работает.

Smitis не мог бы ты добавить комментарии в код? Не могу уловить суть.
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
30.04.2013, 17:01
Цитата Сообщение от Smitis Посмотреть сообщение
Для DOS НЕ работает.
Тогда так:
Почти как у тебя только короче.
Bash
1
2
3
4
5
6
7
8
9
10
11
@echo off
for %%A in (0 1 2) DO (
 for %%B IN (0 1 2 3 4 5 6 7 8 9) DO (
  for %%C IN (0 1 2 3 4 5 6 7 8 9) DO (
   echo.%%A%%B%%C
   if %%A%%B%%C==249 (goto :out)
  )
 )
)
:out
pause>nul
Добавлено через 2 минуты
Возможно на виртуалке с ДОС не сработает echo.%%A%%B%%C
Замените ее на echo %%A%%B%%C
2
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 24
30.04.2013, 17:30  [ТС]
Не работает. Проблема либо в синтаксисе, либо какие-то команды просто не работают.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
30.04.2013, 18:27
Никаких модификаторов для переменной цикла типа %%~zA в DOS'е нет, скобки использовать нельзя, вложенные for'ы запрещены и ограничение на длину строки в bat файле - 127 символов или около того. Тут совсем печаль...
debug.exe можно использовать или это тоже как сторонний файл?

Добавлено через 6 минут
И можно ли создавать на диске файлы в процессе выполнения?
0
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 24
30.04.2013, 18:52  [ТС]
Цитата Сообщение от Somebody Посмотреть сообщение
Никаких модификаторов для переменной цикла типа %%~zA в DOS'е нет, скобки использовать нельзя, вложенные for'ы запрещены и ограничение на длину строки в bat файле - 127 символов или около того. Тут совсем печаль...
debug.exe можно использовать или это тоже как сторонний файл?

Добавлено через 6 минут
И можно ли создавать на диске файлы в процессе выполнения?
debug.exe использовать можно. В процессе выполнения файлы создавать можно.
Под сторонними файлами я понимал заранее созданные файлы (не системные).
0
1748 / 353 / 41
Регистрация: 15.10.2012
Сообщений: 550
30.04.2013, 19:32
Цитата Сообщение от latish86 Посмотреть сообщение
Smitis не мог бы ты добавить комментарии в код? Не могу уловить суть.
Три цикла, каждый раз батник вызывает сам себя, передавая параметрами текущие перебранные цифры и ключи /1 /2 /e чтобы различать вызовы. На последнем вызове вывод и проверка на завершение. Проверки вида if %3 == 0 goto _2_0 чтобы отсечь незначащие ведущие нули. Иначе можно сделать чуть короче.

Возможно на виртуалке с ДОС не сработает echo.%%A%%B%%C
Замените ее на echo %%A%%B%%C
На линейке NT можно проверять запуская из command.com, виртуалки не нужны. И как раз echo. будет работать. Это старый приём, ещё ДОСовский.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
30.04.2013, 19:43
Если есть debug, то можно выполнить произвольный код. Если влезет по длине в строчку, то можно без дополнительных файлов, если не влезет - через файл.
Если нет debug'а, но можно создавать файлы, то всегда можно создать .com файл, который делает всё, что надо. Только тут надо постараться с подбором инструкций, чтобы не было всяких нехороших символов.
В любом случае, без этого получилось:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
@echo off
set d0=0
set d1=x
set d2=x
:next
if not %d2%==2 goto :print
if not %d1%==5 goto :print
if not %d0%==0 goto :print
goto :done
:print
if %d1%==x echo %d0%
if %d1%==x goto :inc
if %d2%==x echo %d1%%d0%
if %d2%==x goto :inc
echo %d2%%d1%%d0%
:inc
if %d0%==9 goto :carry0
if %d0%==8 set d0=9
if %d0%==7 set d0=8
if %d0%==6 set d0=7
if %d0%==5 set d0=6
if %d0%==4 set d0=5
if %d0%==3 set d0=4
if %d0%==2 set d0=3
if %d0%==1 set d0=2
if %d0%==0 set d0=1
goto :next
:carry0
set d0=0
if %d1%==9 goto :carry1
if %d1%==8 set d1=9
if %d1%==7 set d1=8
if %d1%==6 set d1=7
if %d1%==5 set d1=6
if %d1%==4 set d1=5
if %d1%==3 set d1=4
if %d1%==2 set d1=3
if %d1%==1 set d1=2
if %d1%==0 set d1=1
if %d1%==x set d1=1
goto :next
:carry1
set d1=0
if %d2%==1 set d2=2
if %d2%==x set d2=1
goto :next
:done
pause
Цитата Сообщение от Smitis Посмотреть сообщение
На линейке NT можно проверять запуская из command.com, виртуалки не нужны.
Этот виндовый command.com похож на обёртку cmd.exe, он нормально переваривает весь недосовский синтаксис.
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
30.04.2013, 19:52
Если что, вот Создать файл размером 1 MB
анализ того, что не работает и где взять для экспериментов DOS под Винду.
Самому пока кумекать некогда.
0
1748 / 353 / 41
Регистрация: 15.10.2012
Сообщений: 550
30.04.2013, 23:12
Цитата Сообщение от Somebody Посмотреть сообщение
Этот виндовый command.com похож на обёртку cmd.exe, он нормально переваривает весь недосовский синтаксис.
Система не x64 случаем? Под XP/Win7 32 обычный command.com. Без расширений. Даже проблема та же всплывает "Out of environment space".
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
01.05.2013, 11:41
Цитата Сообщение от Smitis Посмотреть сообщение
Система не x64 случаем? Под XP/Win7 32 обычный command.com. Без расширений. Даже проблема та же всплывает "Out of environment space".
Нет, XP 32-битный. Ограничения некоторые есть: длинные имена не понимает, строка больше 127 символов не вводится. Но если написать for /?, справка на несколько экранов виндовая, да и скобки нормально понимает.
0
1748 / 353 / 41
Регистрация: 15.10.2012
Сообщений: 550
02.05.2013, 02:58
Цитата Сообщение от Somebody Посмотреть сообщение
Нет, XP 32-битный. Ограничения некоторые есть: длинные имена не понимает, строка больше 127 символов не вводится. Но если написать for /?, справка на несколько экранов виндовая, да и скобки нормально понимает.
Да, действительно, справка выводится та же, что и в cmd. Но сейчас на всякий случай проверил - ничего из синтаксиса cmd для for не поддерживается. Syntax error и всё. Да и другие команды тоже.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
02.05.2013, 11:34
Цитата Сообщение от Smitis Посмотреть сообщение
Но сейчас на всякий случай проверил - ничего из синтаксиса cmd для for не поддерживается. Syntax error и всё.
for /l работает нормально, например.
0
1748 / 353 / 41
Регистрация: 15.10.2012
Сообщений: 550
02.05.2013, 13:17
Забавно. Если выполнять команды из command.com в интерактивном режиме, в том числе и батники, работает аналогично cmd.exe. Если выполнить батник через command /c test.bat то работает как положено, т.е. как в "чистом ДОС". Даже без расширений, которые были добавленны в Win9x (без длинных имён, без относительных путей вида ....). Справку тоже нужно смотреть command /c for /?

Так что, эмуляторы не нужны.

П.С.
В голову не пришло выполнять команды в интерактивном режиме из command.com
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.05.2013, 13:17
Помогаю со студенческими работами здесь

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

Создать пакетный файл, который генерирует случайное число в пределах 0-100...
Парни помогите, нужно создать пакетный файл,который генерирует случайное число в пределах 0-100 и выдает запрос пользователю на ввод числа....

Создать командный файл, который выводит на экран только число, равное количеству файлов в указанном каталоге
Создайте командный файл, который выводит на экран только число, равное количеству файлов в указанном в каче-стве параметра каталоге.

Создать пакетный файл 1.bat, который выполняет следующее задание: если каталог, имя которого передается первым
Создать пакетный файл 1.bat, который выполняет следующее задание: если каталог, имя которого передается первым параметром, существует,...

Выводит на экран последовательность чисел
Выводит на экран последовательность чисел от 10 до 70 (в последовательности должны отсутствовать числа заканчивающиеся на цифру 4). ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru