Я избежал (), которые были в цикле for, тогда без ошибок.
но, чтобы заметить, что была проблема, я сделал echo set /a ......
и на выходе были строки вроде set /a results=1600 + 14199 (1900 - 1600 + 1
поэтому я мог видеть, что это выглядело возможно )
быть съеденным и взятым в качестве закрывающей скобки цикла for. Поэтому я думал, чтобы избежать их.
также была необходима строка setlocal (по крайней мере с enabledelayedexpansion).. так что!RANDOM! выйдет правильно, иначе вы тоже получите ошибку.
setlocal enableextensions enabledelayedexpansion
@echo off
FOR /l %%A in (0,1,30) do (
set /a results=1600 + !RANDOM! %% ^(1900 - 1600 + 1^)
echo %%A--!results!
)
endlocal
^^ проверено в windows 7.