Я избежал (), которые были в цикле 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.