批处理,使用预定义的单词和1到99之间的随机数生成密码



我不是程序员,我需要一个简单的bat应用程序,它可以生成预定义单词和数字在1到99之间的随机密码。例如,我定义了单词"跳线"、"驴"one_answers"格式",应用程序应该输出类似"jumper25"或"format91"的密码。所有单词都应该有6个字母字符和2位数字,最终密码为8。当然,我应该可以补充更多的话。

我希望有人能解决这个问题,提前非常感谢。

尝试一下:

@echo off
:: The List of name
set "$List=jumper format donkey"
for %%a in (%$List%) do call:pass %%a
pause
exit/b
:pass
set /a $Random=%random% %% 99+1
set "$Random=0%$Random%"
set "$Password=%1%$Random:~-2%"
echo %$Password%

编辑:

要在列表中随机选择一个单词:

@echo off
:: The List of name
set "$List=jumper format donkey"
setlocal enabledelayedexpansion
set "$NbElem="
::Count the number of element in the LIST
for %%a in (%$List%) do set /a $NbElem+=1
set "$c=1"
set /a $R=%random% %% !$NbElem!+1
for %%a in (%$List%) do (
  if !$c!==!$R! call:pass %%a
  set /a $c+=1)
pause
exit/b
:pass
set /a $Random=%random% %% 99+1
set "$Random=0%$Random%"
set "$Password=%1%$Random:~-2%"
echo %$Password%

不如前一个优雅,但应该按预期工作。

编辑:我更新了代码。如果您需要将它封装在一个循环中并生成多个密码,那么它现在运行得更快。还想表明它将适用于大多数特殊的角色。此时,它将无法使用感叹号、冒号,可能还有管道。我可能也可以解决这个问题。

@echo off
setlocal enabledelayedexpansion
REM GET NUMBER OF WORDS IN THE FILE
FOR /F "tokens=1,2 delims=[]:" %%G IN ('findstr /R /C:"^:::......$" "%~f0" ^|find /N /V ""') do SET "WORD%%G=%%H" &SET NUMWORDS=%%G
REM GET RANDOM NUMBER between 1 -99
set /a RAND_NUM=%random% %% 99 + 1
REM ADD LEADING ZERO IF NUMBER IS LESS THAN 10
IF %RAND_NUM% LSS 10 SET RAND_NUM=0%RAND_NUM%
REM GET A RANDOM NUMBER TO CHOSE ONE OF THE PASSWORDS
SET /A RAND_WORD_NUM=%RANDOM% %% %NUMWORDS% + 1 
ECHO !WORD%RAND_WORD_NUM%!%RAND_NUM%
pause
GOTO :EOF
:::jumper
:::donkey
:::format
:::passwd
:::&*^,$;

最新更新