Parêntese não balanceado em um loop for em lote

2

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

Quando executo isso, recebo o erro "Parênteses não balanceados" no windows xp e quando eu executo isso no win 7 eu recebo o erro "Operador ausente".

Precisa de ajuda para o novato.

Obrigado

    
por hbelouf 20.11.2013 / 02:21

1 resposta

1

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.

    
por 20.11.2013 / 02:35