使用预定义的单词和 1 到 99 之间的随机数生成密码的批处理
batch that generates passwords using predefined Words and a random number between 1 and 99
我不是程序员,我需要一个简单的 bat 应用程序,它可以生成带有 1 到 99 之间预定义单词和数字的随机密码。
例如,我定义了单词 "jumper"、"donkey" 和 "Format",应用程序应该输出像 "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
:::&*^,$;
我不是程序员,我需要一个简单的 bat 应用程序,它可以生成带有 1 到 99 之间预定义单词和数字的随机密码。 例如,我定义了单词 "jumper"、"donkey" 和 "Format",应用程序应该输出像 "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
:::&*^,$;