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

Ответить
Аватара пользователя
ANR

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

Сообщение ANR »

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



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



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

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

Сообщение Petya V4sechkin »

Цитата ANR:



число от 1 до 10?



Пример:



Код:

Код: Выделить всё

@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
:Loop
Set V=!Random!
Set /A V = !V! - (!V! / 10) * 10 + 1
Echo !V!
GoTo :Loop
Аватара пользователя
DesmondTruman

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

Сообщение DesmondTruman »

Извиняюсь что поднимаю старую тему, но хоть убейте не могу понять как вычисляется 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.

То ли я владею старой информацией, то ли начинаю деградировать...
Аватара пользователя
El Sanchez

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

Сообщение El Sanchez »

Цитата DesmondTruman:



1. Делим то что в скобках: 95/10=9,5
CMD/BAT - [решено] Batch файл (.bat, .cmd) - как сгенерировать произвольное число от 1 до 10?




DesmondTruman, дробная часть откидывается, так что 95/10=9

Еще вариант:



Код:

Код: Выделить всё

@Echo Off
SetLocal
Set /A i=(%RANDOM%%%10)+1
Echo:%i%
Аватара пользователя
DesmondTruman

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

Сообщение DesmondTruman »

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

El Sanchez, Спасибо, теперь всё ясно.
Аватара пользователя
DesmondTruman

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

Сообщение DesmondTruman »

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

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

Сообщение subuday77 »

@Echo Off

SetLocal

set /a i=%random%%%(50-25+1)+25

Echo:%i%

pause>nul



Так тоже работает. Спасибо.
Аватара пользователя
gora

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

Сообщение gora »

Цитата subuday77:



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




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

Вернуться в «Скриптовые языки администрирования Windows»