0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 24
|
|
1 | |
Создать пакетный файл, который выводит на экран последовательность чисел от 1 до 249 (MS-DOS 6.22)30.04.2013, 08:09. Показов 9524. Ответов 19
Метки нет (Все метки)
Доброго времени суток!
Прошу помощи! Есть задача: создать пакетный файл который выводит на экран последовательность чисел от 1 до 249. Условия: среда разработки - MS-DOS 6.22 (не командная строка win). Цикл FOR с параметром /L не работает. Команда SET с параметром /A не работает. Прошу указать направление в котором копать. Как я понимаю надо каким-то способом организовать счетчик и цикл, и выводить на экран значение этого счетчика в каждой итерации. Использую virtualbox с установленным дистрибутивом MS-DOS 6.22
0
|
30.04.2013, 08:09 | |
Ответы с готовыми решениями:
19
Создать метод, который выводит на экран максимальное из введенных n чисел Создать файл сценария, который выводит на экран заданные сведения о системе Создать пакетный файл, который проверяет существование файла... Создать пакетный файл, который будет сортировать файлы по размеру |
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
30.04.2013, 12:16 | 2 |
Какие ещё условия есть? Проще всего заранее забить строку в файл и вывести его...
0
|
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 24
|
|
30.04.2013, 12:27 [ТС] | 3 |
В том то и дело что нельзя использовать сторонние файлы. Только пакетник. Так сказать задача на изобретательность.
0
|
Модератор
5198 / 2080 / 406
Регистрация: 06.01.2013
Сообщений: 4,794
|
||||||
30.04.2013, 12:43 | 4 | |||||
1
|
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 24
|
|
30.04.2013, 12:48 [ТС] | 5 |
Я тоже додумался до такого варианта
Но есть альтернативный вариант (точно есть!). Эта задача не для практического применения, а для развития мозга Число 249 взято для примера. А если надо вывести 10 000 значений? В этом вся суть. Но все равно спасибо за вариант решения.
0
|
Модератор
5198 / 2080 / 406
Регистрация: 06.01.2013
Сообщений: 4,794
|
||||||
30.04.2013, 14:13 | 6 | |||||
Еще приходило в голову использовать что-то системное, где есть последовательность...
...А сделал так V
Работает! Я в качестве счетчика использовал файл, добисывая в него новые символы. Размер файла в байтах - %%~zA
0
|
1747 / 352 / 41
Регистрация: 15.10.2012
Сообщений: 549
|
||||||
30.04.2013, 16:01 | 7 | |||||
Примерно так, для трёхзначных чисел
Код
command.com /c cnt.bat 123 Для DOS НЕ работает.
0
|
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 24
|
|
30.04.2013, 16:23 [ТС] | 8 |
Тестировали в командной строке cmd?
На виртуалке не получается запустить, в винде работает. Smitis не мог бы ты добавить комментарии в код? Не могу уловить суть.
0
|
Модератор
5198 / 2080 / 406
Регистрация: 06.01.2013
Сообщений: 4,794
|
||||||
30.04.2013, 17:01 | 9 | |||||
Тогда так:
Почти как у тебя только короче.
Возможно на виртуалке с ДОС не сработает echo.%%A%%B%%C Замените ее на echo %%A%%B%%C
2
|
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 24
|
|
30.04.2013, 17:30 [ТС] | 10 |
Не работает. Проблема либо в синтаксисе, либо какие-то команды просто не работают.
0
|
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
30.04.2013, 18:27 | 11 |
Никаких модификаторов для переменной цикла типа %%~zA в DOS'е нет, скобки использовать нельзя, вложенные for'ы запрещены и ограничение на длину строки в bat файле - 127 символов или около того. Тут совсем печаль...
debug.exe можно использовать или это тоже как сторонний файл? Добавлено через 6 минут И можно ли создавать на диске файлы в процессе выполнения?
0
|
0 / 0 / 0
Регистрация: 30.04.2013
Сообщений: 24
|
|
30.04.2013, 18:52 [ТС] | 12 |
debug.exe использовать можно. В процессе выполнения файлы создавать можно.
Под сторонними файлами я понимал заранее созданные файлы (не системные).
0
|
1747 / 352 / 41
Регистрация: 15.10.2012
Сообщений: 549
|
|
30.04.2013, 19:32 | 13 |
Три цикла, каждый раз батник вызывает сам себя, передавая параметрами текущие перебранные цифры и ключи /1 /2 /e чтобы различать вызовы. На последнем вызове вывод и проверка на завершение. Проверки вида if %3 == 0 goto _2_0 чтобы отсечь незначащие ведущие нули. Иначе можно сделать чуть короче.
0
|
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
30.04.2013, 19:43 | 14 |
Если есть debug, то можно выполнить произвольный код. Если влезет по длине в строчку, то можно без дополнительных файлов, если не влезет - через файл.
Если нет debug'а, но можно создавать файлы, то всегда можно создать .com файл, который делает всё, что надо. Только тут надо постараться с подбором инструкций, чтобы не было всяких нехороших символов. В любом случае, без этого получилось: Код
@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
1
|
30.04.2013, 19:52 | 15 |
Если что, вот Создать файл размером 1 MB
анализ того, что не работает и где взять для экспериментов DOS под Винду. Самому пока кумекать некогда.
0
|
1747 / 352 / 41
Регистрация: 15.10.2012
Сообщений: 549
|
|
30.04.2013, 23:12 | 16 |
Система не x64 случаем? Под XP/Win7 32 обычный command.com. Без расширений. Даже проблема та же всплывает "Out of environment space".
0
|
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
01.05.2013, 11:41 | 17 |
Нет, XP 32-битный. Ограничения некоторые есть: длинные имена не понимает, строка больше 127 символов не вводится. Но если написать for /?, справка на несколько экранов виндовая, да и скобки нормально понимает.
0
|
1747 / 352 / 41
Регистрация: 15.10.2012
Сообщений: 549
|
|
02.05.2013, 02:58 | 18 |
Да, действительно, справка выводится та же, что и в cmd. Но сейчас на всякий случай проверил - ничего из синтаксиса cmd для for не поддерживается. Syntax error и всё. Да и другие команды тоже.
0
|
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
02.05.2013, 11:34 | 19 |
0
|
1747 / 352 / 41
Регистрация: 15.10.2012
Сообщений: 549
|
|
02.05.2013, 13:17 | 20 |
Забавно. Если выполнять команды из command.com в интерактивном режиме, в том числе и батники, работает аналогично cmd.exe. Если выполнить батник через command /c test.bat то работает как положено, т.е. как в "чистом ДОС". Даже без расширений, которые были добавленны в Win9x (без длинных имён, без относительных путей вида ....). Справку тоже нужно смотреть command /c for /?
Так что, эмуляторы не нужны. П.С. В голову не пришло выполнять команды в интерактивном режиме из command.com
2
|
02.05.2013, 13:17 | |
02.05.2013, 13:17 | |
Помогаю со студенческими работами здесь
20
Создать пакетный файл, который генерирует случайное число в пределах 0-100... Создать командный файл, который выводит на экран только число, равное количеству файлов в указанном каталоге Создать пакетный файл 1.bat, который выполняет следующее задание: если каталог, имя которого передается первым Выводит на экран последовательность чисел Создать цикл который выводит число на экран. Создать командный файл, который выводит в файл содержание личной папки, отсортированное в алфавитном порядке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |