Batch file I';我正在用批处理文件制作一个随机数生成器

Batch file I';我正在用批处理文件制作一个随机数生成器,batch-file,random,cmd,numbers,Batch File,Random,Cmd,Numbers,我正在用批处理文件制作一个随机数生成器,有时它会出错并显示“00”,然后冻结。数字的种子是当前毫秒。有什么好办法吗 我已经尝试使用IF语句来检查seed/number是否高于某个值,正如您在代码的:calc和:calc2部分中看到的,但在生成6个数字中的5个之后仍然是错误的。代码如下: @echo off :seed set seed=%time% set result=%seed:~9,10% echo seed:%result% goto calc :calc echo generating

我正在用批处理文件制作一个随机数生成器,有时它会出错并显示“00”,然后冻结。数字的种子是当前毫秒。有什么好办法吗

我已经尝试使用IF语句来检查seed/number是否高于某个值,正如您在代码的:calc和:calc2部分中看到的,但在生成6个数字中的5个之后仍然是错误的。代码如下:

@echo off
:seed
set seed=%time%
set result=%seed:~9,10%
echo seed:%result%
goto calc
:calc
echo generating...
set /a "num=%result%*%result%"
if %num% lss 1000 goto seed
set num=%num:~2,3%
cls
goto say
:say
cls
echo your number is %num%
echo press a key for another number
pause >nul
goto calc2
:calc2
cls
echo generating...
set /a "num=%num%*%num%"
if %num% lss 1000 set /a "num=%num%*2"&&goto calc2
set num=%num:~2,3%
goto say
我还希望所有输出的数字长度为2位,但其中一些数字长度为3位。

以下是完成(现在正在工作)的代码:


如果厘米是08或09,代码将失败。
SET/A
命令将它们视为八进制。@Squashman有办法解决这个问题吗?通常的方法是用
1
在两个位置前面加上一个前缀,然后在一个集合/A中减去100,因此更改
SET result=%seed:~9,10%
=>SET/A“结果=1%种子:~9,10%-100”以最简单的形式对
set num=…
执行同样的操作,如果您想要一个两位数(10到99),那么它将是一行代码
set/a num=%random%%%90+10
如果
%random%%
在循环中,则需要使用
SETLOCAL ENABLEDELAYEDEXPANSION
!随机的
@echo off
:seed
set seed=%time%
set result=%seed:~9,10%
echo seed:%result%
goto calc
:calc
echo generating...
set /a "num=%result%*%result%"
if %num% lss 1000 goto seed
set num=%num:~2,3%
cls
goto say
:say
cls
echo your number is %num%
echo press a key for another number
pause >nul
goto calc2
:calc2
cls
echo generating...
set /a "num=%num%*%num%"
if %num% lss 1000 set /a "num=%num%*2"&&goto calc2
set num=%num:~2,3%
set /a "num=%num%+1"
goto say