BATCH用于循环生成随机数

时间:2015-03-29 01:42:07

标签: file batch-file for-loop random cmd

好的,所以这个问题我涉及到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

我很困惑为什么它不会为它经历的每一行文本生成随机数。相反,它似乎只回显第一个生成的数字。任何帮助都会非常感激和抱歉,如果这令人困惑我不是很擅长将我的问题用在文字中,而且这是我第一次在其中一个网站上。

1 个答案:

答案 0 :(得分:1)

环路变量在循环运行之前展开。要解决此问题,您可以使用延迟展开:!RANDOM!,但只有在首先运行setlocal enabledelayexpansion或使用cmd /v启动cmd时启用它才有效。