1

我正在尝试创建一个组成随机 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

但它什么也没做,它只是坐在那里。我究竟做错了什么?

谢谢你的帮助!

4

1 回答 1

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,我想您会看到它生成了多少数字来找到匹配项:)

于 2013-01-25T09:52:17.677 回答