Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.75/40: Рейтинг темы: голосов - 40, средняя оценка - 4.75
36 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 25

Написать батник, который выводит числа от 1 до 256, не используя команду FOR

13.12.2011, 22:27. Показов 8644. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ помогите написать батник, который выводит числа от 1 до 256, не используя команду FOR. Как? Plize!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.12.2011, 22:27
Ответы с готовыми решениями:

Написать батник, который определял бы мой IP-адрес и подставлял его в команду добавления маршрута
У меня следующая ситуация: я подключаюсь к удаленному серверу, используя ВПН-туннель. Для впн-интерфейса мне назначается динамически...

Написать цикл на javascript который последовательно выводит числа
Доброе время суток! Мне очень нужна ваша помощь. Дали задание и совсем не могу уловить логику. Выводить числа нужно таким образом 111,...

Батник, который запрашивает имя папки и выводит отсортированные элементы по дате
Батник, который запрашивает имя папки и выводит отсортированные элементы по дате. Помогите, пожалуйста.

51
36 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 25
15.02.2012, 21:02  [ТС]
Студворк — интернет-сервис помощи студентам
Что за символы перевода строки? Какие еще бывают???
0
887 / 189 / 16
Регистрация: 18.07.2011
Сообщений: 260
15.02.2012, 21:10
Цитата Сообщение от fahitos Посмотреть сообщение
Что за символы перевода строки?
Это те символы которые вставляются в текст при нажатии клавиши Enter.
0
36 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 25
15.02.2012, 21:17  [ТС]
а как сделать, чтобы сразу 256 строк добавилось?
0
887 / 189 / 16
Регистрация: 18.07.2011
Сообщений: 260
15.02.2012, 21:20
Цитата Сообщение от fahitos Посмотреть сообщение
а как сделать, чтобы сразу 256 строк добавилось?
Вернулись к тому, с чего начали.
Сначала объясни, что делает код №20, а потом задавай такие вопросы.
0
36 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 25
15.02.2012, 22:11  [ТС]
echo . >0.tmp
:ddd
find /v /c "" <0.tmp
echo . >>0.tmp
find /v /c "" <0.tmp|find "256" 2>nul||goto ddd


вывод пустой строки
метка
вывод числа всех строк в файле
вывод еще одной пустой строки
после вывода числа всех строк в файле идет поиск 256 и переход на метку

Добавлено через 6 минут
@echo off
echo 256 >0.tmp
:ddd
find /v "." <0.tmp
echo 255 >>0.tmp
find /v /c "." <0.tmp|find "1" 2>nul||goto ddd
del 0.tmp
pause
где ошибки подскажи???

Добавлено через 24 минуты
Помоги пожалуйста.
0
887 / 189 / 16
Регистрация: 18.07.2011
Сообщений: 260
16.02.2012, 05:35
вывод пустой строки - для чего нужна эта команда в скрипте?
метка
вывод числа всех строк в файле - чему равно число строк?
вывод еще одной пустой строки - для чего нужна эта команда в скрипте?
после вывода числа всех строк в файле идет поиск 256 и переход на метку[/quote] - откуда возьмётся число 256?

Добавлено через 3 минуты
Цитата Сообщение от fahitos Посмотреть сообщение
@echo off
echo 256 >0.tmp
:ddd
find /v "." <0.tmp
echo 255 >>0.tmp
find /v /c "." <0.tmp|find "1" 2>nul||goto ddd
del 0.tmp
pause
Ты сначала по шагам объясни (по русски) каким образом твоя будущая программа будет печатать числа от 256 до 1.
Откуда она их возьмёт, и откуда берёт их (1-256) моя программа?
И лишь потом начинай писать свою.
0
36 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 25
16.02.2012, 11:00  [ТС]
1.Чтобы добавить строку в файл.
2.переход на метку - цикл.
3.сейчас число строк = 1
4.добавляется еще одна строка, число строк уже равно 2
5.256 возьмется, когда будит 256 строк в файле
Так?
0
887 / 189 / 16
Регистрация: 18.07.2011
Сообщений: 260
16.02.2012, 11:15
Цитата Сообщение от fahitos Посмотреть сообщение
Так?
Так.
Осталось в этом же духе описать как будет работать обратный счётчик.
Но!
Удалить строку из файла нельзя. Можно переписать существующий файл в новый, исключив одну строку. Затем удалить старый, а новый переименовать. Это будет выглядеть так, будто из файла удалили одну строку. Если учесть, что переписывание файла из 256 строк в 256 раз медленнее, чем добавление одной строки, то новый батник будет в 100 раз медленее, чем код №20.
0
36 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 25
16.02.2012, 20:02  [ТС]
А как перезаписывается существующий файл? и как исключается строка? подскажи пожалуйста, какими командами воспользоваться???

Добавлено через 3 часа 8 минут
@echo off
echo. 256 >0.tmp
:ddd
find /v "." <0.tmp
move /y 0.tmp
del /s 0.tmp
rename 1.tmp
echo . >>0.tmp
find /v /c "" <0.tmp|find "1" 2>nul||goto ddd
pause
Посмотри Пожалуйста???

Добавлено через 25 секунд
где ошибка?

Добавлено через 14 минут
или вот, что я пропустил???
@echo off
echo. 256 >0.tmp
:ddd
find /v "." <0.tmp
move /y 0.tmp 1.tmp
del - /s 1.tmp
rename 1.tmp 256.tmp
echo. >>1.tmp
find /v /c "." <1.tmp|find "1" 2>nul||goto ddd
pause
0
887 / 189 / 16
Регистрация: 18.07.2011
Сообщений: 260
16.02.2012, 21:23
Цитата Сообщение от fahitos Посмотреть сообщение
или вот, что я пропустил???
Попытайся объяснить, что делает каждая из строк твоей программы, а я подскажу в чём ты ошибся.
Особенно интересны строки:
echo. 256 >0.tmp
и
rename 1.tmp 256.tmp
1
36 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 25
18.02.2012, 23:46  [ТС]
1.@echo off
2.echo. 256 >0.tmp
3.:ddd
4.find /v "." <0.tmp
5.move /y 0.tmp 1.tmp
6.del - /s 1.tmp
7.rename 1.tmp 256.tmp
8.echo. >>1.tmp
9.find /v /c "." <1.tmp|find "1" 2>nul||goto ddd

1.Отображение эхо режима (выклбченно).
2.Выводит 256 пустых строк (я просто не знаю как сразу 256 вывести, подскажи пожалуйста).
3.Метка.
4.Вывод общего числа строк 256.
5.Перезаписывает существующиф временный файл 0 на 1.
6.не удаляет временный файл 1 (наверное это лишнее ?).
7.Переименовываем временный файл 1 на 256.
8.Добовляется еще строка (Это я зря наверное вславин ?).
9.1 появится, когда останится 1 строк в файле.

Дружище помоги пожалуцста до конца разобраться, как видиш тяжко мне дается освоение написания бат-файлов.
ПОЖАЛУЙСТА???

Добавлено через 6 часов 13 минут
Ответь пожалуйста
0
887 / 189 / 16
Регистрация: 18.07.2011
Сообщений: 260
19.02.2012, 19:35
Так как версия с файлом очень медленная, то пришлось от неё отказаться, и вот что получилось:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
:: Отключить вывод команд
@echo off
:: Начальное значение
set X=256
 
:start
:: Вывести текущее значение
echo %X%
:: Если текущее значение равно 1, то СТОП
if %X%==1 exit
:: Уменьшить текущее значение
call :minus1 0
:: Повторить вывод и уменьшение нового значения
goto :start
 
:: ПОДПРОГРАММА уменьшения трёх значного числа
:minus1
:: pos - позиция изменившейся цифры (от конца)
set pos=%1
:: Если изменяется 3 цифра справа (сотни), то запоминаем цифру и 2 знака после неё
if %pos%==2 (
  set prefix=
  set postfix=%X:~-2,2%
  set cifra=%X:~-3,1%
  set pos1=
)
:: Если изменяется 2 цифра справа (десятки), то запоминаем один знак до цифры, цифру, и 1 знак после неё
if %pos%==1 (
  set prefix=%X:~,-2%
  set postfix=%X:~-1,1%
  set cifra=%X:~-2,1%
  set pos1=2
)
:: Если изменяется 1 цифра справа (еденицы), то запоминаем два знака до цифры и цифру
if %pos%==0 (
  set prefix=%X:~,-1%
  set postfix=
  set cifra=%X:~-1,1%
  set pos1=1
)
:: Определяем какая цифра будет на месте изменившейся
if %cifra%==1 set cifra_=0
if %cifra%==2 set cifra_=1
if %cifra%==3 set cifra_=2
if %cifra%==4 set cifra_=3
if %cifra%==5 set cifra_=4
if %cifra%==6 set cifra_=5
if %cifra%==7 set cifra_=6
if %cifra%==8 set cifra_=7
if %cifra%==9 set cifra_=8
if %cifra%==0 set cifra_=9
:: Поставить новую цифру на место изменившейся
set X=%prefix%%cifra_%%postfix%
:: Если цифра сменила на 9, то изменить и соседнюю цифру
if %cifra_%==9 call :minus1 %pos1%
:: Добавить пробел перед числом
set X= %X%
:: Убрать из числа нули, перед которыми есть нули
set X=%X: 0=%
:: Убрать из числа пробелы
set X=%X: =%
:: Выйти из подпрограммы
exit /b
Добавлено через 18 минут
Некоторые пояснения.
В цикле выполняется подпрограмма уменьшения на единицу.

Подпрограмма берёт последнюю цифру в строке и уменьшает её на единицу.
Если цифра меняется с 0 на 9, то с помощью той же подпрограммы уменьшается предыдущая цифра.

В скрипте используются строки вида:
Bash
1
set cifra=%X:~-2,1%
О том, как она работает можно почитать здесь:
http://cmd-rusprogbooks.tiddlyspace.com/

Добавлено через 1 час 33 минуты
Вариант с использованием файлов.
После запуска результата нужно ждать около 2х минут.
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
::Отключить вывод команд
@echo off
:: Создать файл с одной пустой строкой
echo. >0.tmp
:start1
:: Сохранить число строк во второй файл
find /c /v ""<0.tmp >1.tmp
:: Поместить число из файла в переменную Number
set /p Number="" <1.tmp
:: Дописать перед числом три пробела
set Number=   %Number%
:: Оставить три последних знака числа
set Number=%Number:~-3%
:: Добавить число в первый файл к другим числам
echo %Number% >>0.tmp
:: Подсчитать число строк, и передать в следующаю команду,
:: которая ищет в числе строк, число 257 (256 чисел и одна пустая строка),
:: если строка не найдена, то переходим обработке следующего числа
find /c /v ""<0.tmp|find "257">nul||goto start1
:: Вывести отсортированный в обратном порядке файл
sort /r 0.tmp
:: Удалить не нужные уже файлы
del 0.tmp
del 1.tmp
Посмотреть оба варианта можно здесь
http://cmd-rusprogbooks.tiddly... 202)%5D%5D
Добавлено через 13 минут
ActionScript 3
1
9,11 и 13 строка превращает строку "1", "2" и т.д. в строки "  1", "  2" и т.д.
При записи чисел в файл они получаются выровненными по правому краю.
Это обязательное условие для правильной сортировки.
В противном случае сортировка получается такой (фрагмент):
Bash
1
2
3
4
5
6
103
102
101
100
10
1
Правильная сортировка (фрагмент):
Bash
1
2
3
4
5
6
102
101
100
 99
 98
 97
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.02.2012, 19:35

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

Как сделать батник который внезависимости от того где он находиться, запускает другой батник
Как сделать батник который в независимости от того где он находиться, запускает другой батник start BLaa.batЭто стандартный запуск...

Как создать батник, который создает батник с командами?
Уже знаю, что такая тема была, но до конца не понял. Как создать батник, который создаст батник с командами? К примеру то, что должно в...

Написать батник, который будет запускать Avast с определёнными параметрами и ключами
Добрый день! Идея состоит в том, чтобы написать батник, который будет заходить в папку с антивирусом и оттуда запускать сканер командной...

Батник, который пингует указанный IP-адрес и в случае отсутствия пинга запускает другой батник и закрывается
Доброго времени суток, столкнулся с проблемой ... нужен батник который будет пинговать айпишник к примеру 192.168.10.14, в отсутствии пинга...


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

Или воспользуйтесь поиском по форуму:
52
Ответ Создать тему
Новые блоги и статьи
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru