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 时才有效=]
好的,所以我遇到的这个问题涉及 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 时才有效=]