批处理中 for 循环中的括号不平衡

批处理中 for 循环中的括号不平衡

@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

我转义了 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 中测试。

相关内容