BATCH For循环生成随机数

BATCH For loop generating random numbers

好的,所以我遇到的这个问题涉及 CMD 脚本和这个:

DIR /A-D /B /S > DIR.DAT
FOR /F "TOKENS=*" %%I IN (DIR.DAT) DO (
  CALL :DICEROLL

  IF %NUMBER%==0 (
    ECHO BOOM BADDA BOOM
  ) ELSE (
    ECHO %NUMBER%
  )
)
:DICEROLL
SET /A NUMBER=%RANDOM% %% 16

当我 运行 文件时,我得到这样的东西:

15
15
15
15

而不是我想要的是这样的:

14
0
8
10

我只是很困惑为什么它不为它经过的每一行文本生成随机数。相反,它似乎只回应第一个生成的数字。任何帮助将不胜感激,如果这令人困惑,我将不胜感激。我不太擅长用语言表达我的问题,而且这是我第一次访问这些网站之一。

环境变量在循环运行前展开。要修复它,您可以使用延迟扩展:!RANDOM!,但它只有在您首先通过 运行 setlocal enabledelayexpansion 启用它,或者使用 cmd /v.[=13 启动 cmd 时才有效=]