Вопрос: % RANDOM% переменной среды дает одно число [дубликат]


На этот вопрос уже есть ответ:

У меня проблемы с %RANDOM% переменная среды в следующей команде:

FOR /l %%A in (0,1,30) do set /a results=1600 + %RANDOM% %% (1900 - 1600 + 1) && echo %%A--!results!

Я ожидаю, что этот результат:

0--1656
1--1743
2--1629
3--1887
…

Но я получаю это:

0--1656
1--1656
2--1656
3--1656
…

%RANDOM% переменная предположительно возвращает случайное число, но оно дает тот же номер. В чем проблема и как я могу это исправить?


0
2017-11-19 16:57


Источник


@WernerHenze, на самом деле это не так; это ближе к этот вопрос, - Synetech
@Synetech OK, но, по крайней мере, ответы на вопрос, который я связал, дают ответ на вопрос здесь :). - Werner Henze


Ответы:


Вы должны использовать задержанное расширение для RANDOM переменная:

FOR /l %%A in (0,1,30) do set /a results=1600 + !RANDOM! %% (1900 - 1600 + 1) && echo %%A--!results!

Screenshot of command-prompt with expected results from script


1
2017-11-19 17:22



Спасибо ... Используя задержанное расширение, он работал так, как я хотел. - hbelouf
Вы уже использовали задержанное расширение на results переменная, вы просто забыли использовать ее на random переменная. Вы должны использовать ! на месте % для все переменные в for петля. ;-) - Synetech