Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Batch файл (.bat, .cmd) - как сгенерировать произвольное число от 1 до 10?

Ответить
Настройки темы
CMD/BAT - [решено] Batch файл (.bat, .cmd) - как сгенерировать произвольное число от 1 до 10?
ANR ANR вне форума

Старожил


Сообщения: 181
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Подскажите, пожалуйста.

Как можно в BAT файле можно сгенерировать произвольное число от 1 до 10? Афаик, %random% дает число от 0 до 32767, а что если мне нужно от 1 до 10? Есть какой-то простой способо кроме как генерировать в цикле %random% число, пока оно не окажется в пределах от 1 до 10?

Сама задача такая, что нужно выбирать 1 из 10 файлов в произвольном порядке (1.bmp , 2.bmp , ... , 10.bmp). Кто какие способы может предложить? Спасибо!

Отправлено: 10:40, 12-12-2008

 


Moderator


Сообщения: 53185
Благодарности: 15433

Профиль | Отправить PM | Цитировать


Цитата ANR:
число от 1 до 10?
Пример:
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion

:Loop
Set V=!Random!
Set /A V = !V! - (!V! / 10) * 10 + 1
Echo !V!
GoTo :Loop
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:37, 12-12-2008 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 78
Благодарности: 14

Профиль | Отправить PM | Цитировать


Извиняюсь что поднимаю старую тему, но хоть убейте не могу понять как вычисляется set /A V=.
К примеру %random% равен 95. Соответственно выглядеть будет так: set /A V=95 - (95 / 10) * 10 + 1.
Как помниться еще со школы приоритет вычисления в данном случае:
1. Скобки
2. Умножение\деление
3. Плюс\минус
------------------------------------------------

1. Делим то что в скобках: 95/10=9,5
2. Полученное умножаем на 10: 9,5*10=95
3. Далее отнимаем полученное число от 95: 95-95=0
4. И последнее: 0+1=1.
Итого "echo !v!" показывает 6.
То ли я владею старой информацией, то ли начинаю деградировать...
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:45, 25-03-2013 | #3


(*.*)


Сообщения: 36497
Благодарности: 6676

Профиль | Сайт | Отправить PM | Цитировать


DesmondTruman, попробуйте PowerShell
Код: Выделить весь код
1..10 | % {Get-Random -Minimum 1 -Maximum 10 }

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 17:48, 25-03-2013 | #4


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать


Цитата DesmondTruman:
1. Делим то что в скобках: 95/10=9,5 »
DesmondTruman, дробная часть откидывается, так что 95/10=9
Еще вариант:
Код: Выделить весь код
@Echo Off
SetLocal
Set /A i=(%RANDOM%%%10)+1
Echo:%i%
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:21, 25-03-2013 | #5


Пользователь


Сообщения: 78
Благодарности: 14

Профиль | Отправить PM | Цитировать


Vadikan, Спасибо, но интересует именно в cmd\bat.
El Sanchez, Спасибо, теперь всё ясно.

Отправлено: 18:48, 25-03-2013 | #6


Новый участник


Сообщения: 46
Благодарности: 2

Профиль | Отправить PM | Цитировать


А как нижний параметр задать? Например сгенерировать число от 25 до 50?

Отправлено: 00:56, 26-03-2013 | #7


Пользователь


Сообщения: 148
Благодарности: 39

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
SetLocal
set min=25
set max=50
set /a i=%random%%%(max-min+1)+min
Echo:%i%
pause>nul

-------
Alex Dragokas

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:37, 26-03-2013 | #8


Новый участник


Сообщения: 46
Благодарности: 2

Профиль | Отправить PM | Цитировать


@Echo Off
SetLocal
set /a i=%random%%%(50-25+1)+25
Echo:%i%
pause>nul

Так тоже работает. Спасибо.

Отправлено: 03:38, 26-03-2013 | #9


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Цитата subuday77:
Так тоже работает. »
Работает, но понять, (что здесь есть число 50, и что здесь есть число 25, а также почему в скобках не написать просто 26 и не делать ни каких вычислений, а потом еще и почему бы сами скобки не убрать, ставшие ненужными...), невозможно. А в приведенном Diskretor примере все четко и понятно.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:02, 26-03-2013 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Batch файл (.bat, .cmd) - как сгенерировать произвольное число от 1 до 10?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Система - Как скрыть окно в котором выполняется пакетный файл (*.bat или *.cmd)? Shaytan Программное обеспечение Windows 36 21-12-2021 14:57
CMD/BAT - [решено] Как определить количество установленной памяти в ХР с помошью .cmd .bat? xaosxaos Скриптовые языки администрирования Windows 17 28-03-2017 23:57
C/C++ - [решено] Как сгенерировать случайное число на всем диапазоне значений int? Michael Программирование и базы данных 14 04-02-2011 17:08
CMD/BAT - [решено] как задать в bat'нике чтобы cmd раскрылся на весь экран сам? One THE darK Скриптовые языки администрирования Windows 11 23-03-2010 17:17
[решено] Как с помощью CMD(BAT) запустить запароленный sfx архив! ofcoss Автоматическая установка приложений 7 10-07-2009 00:41




 
Переход