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 に答える