我正在尝试创建一个组成随机DOB的批处理文件。
@echo off
title Random DOB Generator!
echo Working...
echo.
:loop
set dd=%random%
if "%dd%" GTR 31 goto loop
if "%dd%" LSS 1 goto loop
:loop2
echo %dd%/??/????
echo.
:loop2a
set mm=%random%
if "%mm%" GTR 12 goto loop2a
if "%mm%" LSS 1 goto loop2a
:loop3
echo %dd%/%mm%/????
echo.
:loop3a
set yyyy=%random%
if "%yyyy%" GTR 2000 goto loop3a
if "%yyyy%" LSS 1900 goto loop3a
:win
echo.
echo Result: %dd%/%mm%/%yyyy%
pause > nul
exit
但它没有做任何事情,只是坐在那里。我做错了什么?
感谢您的帮助!
答案 0 :(得分:3)
问题在于如何生成随机数。
%random%
返回0到32767之间的数字,因此尝试生成1到31,1和12之间,1900年和2000之间的数字需要一些时间。
这不是什么都不做,只是花了这么长时间才找到匹配的数字。
您可以使用一些数学来查找某个范围之间的数字,因此您无需等待。
@echo off
title Random DOB Generator!
echo Working...
echo.
set /a dd=%random% * 31 / 32768 + 1
echo %dd%/??/????
echo.
set /a mm=%random% * 12 / 32768 + 1
echo %dd%/%mm%/????
echo.
set /a yyyy=%random% * (2000 - 1900 + 1) / 32768 + 1900
echo.
echo Result: %dd%/%mm%/%yyyy%
pause >nul
exit
如果您从原始脚本中取消@echo off
,我认为您会看到它为查找匹配项生成了多少个数字:)