我正在测试以下批处理文件,如下所示。我总是在蝙蝠开始时回显num和number的值,只是为了检查这些变量是否为空。他们是。首次运行时,批处理文件将转到echo Random number = %number%
,并显示一个有效数字。如果然后通过给N作为选择正确终止该批次,则该批次将关闭。在击球的第二次启动期间,将按预期再次选择一个有效的随机数。
出乎意料的是,选择一个随机数,然后单击X或用alt + f4终止程序来结束批处理文件时会发生什么。第二次启动击球时,选择的随机数大多数时候与第一次运行批处理文件时选择的数字相同。即使在set "num="
和set "number="
运行echo Random number = %number%
之后,所选编号也将与第一个运行蝙蝠中选择的编号相同。
我不认为这解释得很好,所以也许了解发生情况的最好方法是自己创建和运行蝙蝠。在您第一次运行时,请选择一些随机数。然后强行关闭该批处理文件,并且不能正确终止该批处理文件。当您再次运行批处理文件时,运行2的第一个选择的随机数将与运行1上次生成的随机数相同。清除bat文件开头的变量似乎无法解决此问题。问题是。如何确保始终生成新的随机数,而不管批处理文件如何终止? set /a num=%random% * 10 / 32768 + 1
不是设置随机数的最佳方法吗?
@echo off
:start
set "num="
set "number="
echo old num=%num% and old number=%number%
pause
goto RAND
:RAND
cls
set /a num=%random% * 10 / 32768 + 1
set number=%num%
goto :%num%
:%num%
set "num="
echo Random number = %number%
echo.
CHOICE /M "Do you want another random number?"
IF ERRORLEVEL 2 GOTO exit
IF ERRORLEVEL 1 GOTO start
:exit
exit