【发布时间】:2016-03-02 17:10:52
【问题描述】:
我有一段看起来像这样的代码(启用延迟扩展):
for /l %%y in (1,1,%variable%) do (
set /a rand=!random! * 100 / 32768 + 1
echo !rand!
if !rand! GEQ %chance% (
set /a var=%var%+%varx%
)
)
echo !rand! 部分显示数字,但 if !rand! GEQ %chance% 只看到 !rand!作为一个字符串,而不是它的值。所以即使!rand!大于 %chance% 它仍然会跳过命令。
奇怪的部分是无论!rand! 比%chance% 大多少次,循环结束时var 只增加一次%varx%。这里应该怎么做才能让IF 语句看到!rand! 的值?
【问题讨论】:
-
您似乎知道延迟扩展以及如何使用它。也可以为
!var!而不是%var%这样做 -
它现在似乎可以工作了。太感谢了!所以在循环中我应该在 IF 和 SET 中使用感叹号?
-
请注意
DOS是80/90年代的操作系统!请改用标签 Windows。
标签: batch-file for-loop if-statement