2

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

Когда я запускаю это, я получаю сообщение об ошибке "Несбалансированные скобки" в Windows XP, а когда я запускаю это в Win 7, я получаю сообщение об ошибке "Отсутствует оператор".

Нужна помощь новичку.

Спасибо

1 ответ1

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .