Eu escapei do () que estava dentro do loop for, então não houve erro.
mas percebi que havia um problema que eu fiz echo set /a ......
e a saída tinha linhas como set /a results=1600 + 14199 (1900 - 1600 + 1
, então eu vi que parecia que o )
estava sendo comido e considerado um parêntese de fechamento do loop. Então eu pensei em escapar deles.
também foi necessária a linha setlocal (pelo menos com a expansão enabledelayed) .. de modo que! RANDOM! iria sair certo, caso contrário, você também terá um erro.
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
^^ testado no windows 7.