如何批量制作字母密码生成器?

如何批量制作字母密码生成器?

我很难弄清楚如何制作一个包含随机字母的密码生成器。例如,ASWED-ASDWAD-EFEST。到目前为止,我只能使用代码生成随机数

@echo off

:password

echo %random%-%random%-%random
pause
goto password

PS:我的操作系统是Windows Vista。

任何帮助都将受到感谢。

答案1

有讨论这里你可以根据自己的目的进行调整。

@Echo Off
Setlocal EnableDelayedExpansion
Set _RNDLength=8
Set _Alphanumeric=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Set _Str=%_Alphanumeric%987654321
:_LenLoop
IF NOT "%_Str:~18%"=="" SET _Str=%_Str:~9%& SET /A _Len+=9& GOTO :_LenLoop
SET _tmp=%_Str:~9,1%
SET /A _Len=_Len+_tmp
Set _count=0
SET _RndAlphaNum=
:_loop
Set /a _count+=1
SET _RND=%Random%
Set /A _RND=_RND%%%_Len%
SET _RndAlphaNum=!_RndAlphaNum!!_Alphanumeric:~%_RND%,1!
If !_count! lss %_RNDLength% goto _loop
Echo Random string is !_RndAlphaNum!

贱民解释上述内容:

我已经对其进行了修改,以便您可以轻松指定长度并添加或删除字符,而无需更改代码的任何其他部分。

例如,您可能不想同时使用 0 和 O(零和大写 O),或者 1 和 l(一和小写 L)。

您可以使用除以下字符之外的标点符号:

! % ^ & < >

您可以使用^%,但必须将它们_Alphanumeric 作为 ^^ 或 两次输入到变量中%%。但是,如果您想_RndAlphaNum稍后在批处理文件中使用结果 ( )(而不是回显到屏幕上),则可能需要对它们进行特殊处理。

您甚至可以使用空格,只要它不是字符串中的最后一个字符即可。但如果它是生成的字符串中的最后一个字符,则不会使用它,因此您只有 7 个字符。

答案2

rem 16 stings pwd

setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
set alfanum=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

set pwd=
FOR /L %%b IN (0, 1, 16) DO (
SET /A rnd_num=!RANDOM! * 62 / 32768 + 1
for /F %%c in ('echo %%alfanum:~!rnd_num!^,1%%') do set pwd=!pwd!%%c
)

echo pwd=%pwd%

答案3

这是一个简单而优雅的解决方案

@echo off
setlocal enableextensions enabledelayedexpansion

set /P _length=Password Length: %==%
set /a z = %_length%
set "string=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
set "password="
for /L %%i in (1,1,!z!) do call :_genRand
echo Password is:  %password%
goto :EOF

:_genRand
set /a x=%random% %% 62
set password=%password%!string:~%x%,1!
goto :eof

答案4

我编辑了保罗的一篇文章:

@Echo Off
color 0a
set /P lengthnumberuser="What length do you want your password to be?   "
pause
cls
Setlocal EnableDelayedExpansion
Set _RNDLength=%lengthnumberuser%
Set _Alphanumeric=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Set _Str=%_Alphanumeric%987654321
:_LenLoop
IF NOT "%_Str:~18%"=="" SET _Str=%_Str:~9%& SET /A _Len+=9& GOTO :_LenLoop
SET _tmp=%_Str:~9,1%
SET /A _Len=_Len+_tmp
Set _count=0
SET _RndAlphaNum=
:_loop
Set /a _count+=1
SET _RND=%Random%
Set /A _RND=_RND%%%_Len%
SET _RndAlphaNum=!_RndAlphaNum!!_Alphanumeric:~%_RND%,1!
If !_count! lss %_RNDLength% goto _loop
Echo Password is: is !_RndAlphaNum!

pause

相关内容