好的,所以这个问题我涉及到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
我很困惑为什么它不会为它经历的每一行文本生成随机数。相反,它似乎只回显第一个生成的数字。任何帮助都会非常感激和抱歉,如果这令人困惑我不是很擅长将我的问题用在文字中,而且这是我第一次在其中一个网站上。
答案 0 :(得分:1)
环路变量在循环运行之前展开。要解决此问题,您可以使用延迟展开:!RANDOM!
,但只有在首先运行setlocal enabledelayexpansion
或使用cmd /v
启动cmd时启用它才有效。