Código (dos) [Seleccionar]
@ ECHO OFF & SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET CHARS=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 @#/()=+-,.;:_*'
:_MENU
CLS
ECHO Seguridad en contrase¤a:
ECHO.
ECHO 1. Baja
ECHO 2. Media
ECHO 3. Alta
ECHO.
ECHO 0. Salir
ECHO.
(SET SECLEVEL=)
(SET /P SECLEVEL_=^> )
IF NOT DEFINED SECLEVEL_ (GOTO:_MENU)
IF ^%SECLEVEL_:~0,1%==1 (SET MAXCHAR=25&GOTO:_LENGHT)
IF ^%SECLEVEL_:~0,1%==2 (SET MAXCHAR=51&GOTO:_LENGHT)
IF ^%SECLEVEL_:~0,1%==3 (SET MAXCHAR=77&GOTO:_LENGHT)
IF ^%SECLEVEL_:~0,1%==0 (EXIT)
GOTO:_MENU
:_LENGHT
CLS
ECHO Longitud de contrase¤a:
ECHO.
(SET PASSWORDLENGTH=)
(SET /P PASSWORDLENGTH_=^> )
IF NOT DEFINED PASSWORDLENGTH_ (GOTO:_MENU)
(SET RESULT_=)
FOR /L %%I IN (1,1,%PASSWORDLENGTH_%) DO (
CALL :_ONERANDOMCHAR %MAXCHAR% RNDCHR_
SET RESULT_=!RESULT_!!RNDCHR_!
)
ECHO %RESULT_%|FINDSTR "[0123456789]">NUL
IF ^%ERRORLEVEL%==0 SET FOUNDNUMBER=TRUE
ECHO %RESULT_%|FINDSTR "[ @#/()=+-,.;:_*']">NUL
IF ^%ERRORLEVEL%==0 SET FOUNDSPECIAL=TRUE
IF DEFINED REQUIRENUMBER IF NOT DEFINED FOUNDNUMBER GOTO:_ONERANDOMCHAR
IF DEFINED REQUIRESPECIAL IF NOT DEFINED FOUNDSPECIAL GOTO:_ONERANDOMCHAR
GOTO:_RESULT
:_ONERANDOMCHAR
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET /A DIV_=32767 / %1
SET /A RAND_=%RANDOM% / %DIV_%
SET RETURN_=!CHARS:~%RAND_%,1!
ENDLOCAL & SET "%2=%RETURN_%" & GOTO:EOF
:_RESULT
CLS
ECHO Contrase¤a generada:
ECHO.
ECHO %RESULT_%
ECHO.
PAUSE
GOTO:_MENU
Escrito por mi, con la ayuda del código "Make a randomized password" de Timo Salmi.