I'm having a hard time figuring out how to make a password generator with random letters in it. For example, ASWED-ASDWAD-EFEST. So far I can only make random numbers by using the code
@echo off :password echo %random%-%random%-%random pause goto password PS: my OS is windows vista.
all help will be appreciated.
17 Answers
There is a discussion here that you could adapt for your purposes.
@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! TheOutcaste explains the above:
3I've modified it so you can easily specify the length and add or remove characters without having to change any other part of the code.
For example, you might not want to use both 0 and O (zero and Uppercase O), or 1 and l (one and lowercase L).
You can use punctuation except for these characters:
! % ^ & < >You can use
^and%, but must enter them in the_Alphanumericvariable twice as ^^ or%%. However, if you want to use the result (_RndAlphaNum) later in the batch file (other than Echoing to the screen), they might require special handling.You can even use a space, as long as it's not the last character in the string. If it ends up as the last character in the generated string though, it will not be used, so you would only have 7 characters.
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% 2This is a simple and elegant solution to this
@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 here is mine. Ameture, but it works
@Echo OFF @echo Would You Like Me To Make You A Password? Type Your Response And Press Enter. set /p ans= if %ans%==yes (goto yes ) if %ans%==no (goto exit ) :exit cls @echo Are You Sure? set /p ans= if %ans%==yes (goto exit ) if %ans% NEQ yes (goto yes ) :yes cls @echo Loading... @echo OFF ping localhost -n 4 > Nul goto hardpart :hardpart @echo OFF cls @echo Get a peice of paper so you will remember pause cls @echo OFF set /A r=%RANDOM% %% 25 + 1 cls if %r%==1 goto 1 if %r%==2 goto 2 if %r%==3 goto 3 if %r%==4 goto 4 if %r%==5 goto 5 if %r%==6 goto 6 if %r%==7 goto 7 if %r%==8 goto 8 if %r%==9 goto 9 if %r%==10 goto 10 if %r%==11 goto 11 if %r%==12 goto 12 if %r%==13 goto 13 if %r%==14 goto 14 if %r%==15 goto 15 if %r%==16 goto 16 if %r%==17 goto 17 if %r%==18 goto 18 if %r%==19 goto 19 if %r%==20 goto 20 if %r%==21 goto 21 if %r%==22 goto 22 if %r%==23 goto 23 if %r%==24 goto 24 if %r%==25 goto 25 if %r%==26 goto 26 :1 @echo 1st letter is a goto number2 pause goto number2 :2 @echo 1st letter is b pause goto number2 :3 @echo 1st letter is c pause goto number2 :4 @echo 1st letter is d pause goto number2 :5 @echo 1st letter is e pause goto number2 :6 @echo 1st letter is f pause goto number2 :7 @echo 1st letter is g pause goto number2 :8 @echo 1st letter is h pause goto number2 :9 @echo 1st letter is i pause goto number2 :10 @echo 1st letter is j pause goto number2 :11 @echo 1st letter is k pause goto number2 :12 @echo 1st letter is l pause goto number2 :13 @echo 1st letter is m pause goto number2 :14 @echo 1st letter is n pause goto number2 :15 @echo 1st letter is o pause goto number2 :16 @echo 1st letter is p pause goto number2 :17 @echo 1st letter is q pause goto number2 :18 @echo 1st letter is r pause goto number2 :19 @echo 1st letter is s pause goto number2 :20 @echo 1st letter is t pause goto number2 :21 @echo 1st letter is u pause goto number2 :22 @echo 1st letter is v pause goto number2 :23 @echo 1st letter is w pause goto number2 :24 @echo 1st letter is x pause goto number2 :25 @echo 1st letter is y pause goto number2 :26 @echo 1st letter is z pause goto number2 :number2 @echo OFF set /A s=%RANDOM% %% 25 + 1 cls if %s%==1 goto 1a if %s%==2 goto 2a if %s%==3 goto 3a if %s%==4 goto 4a if %s%==5 goto 5a if %s%==6 goto 6a if %s%==7 goto 7a if %s%==8 goto 8a if %s%==9 goto 9a if %s%==10 goto 10a if %s%==11 goto 11a if %s%==12 goto 12a if %s%==13 goto 13a if %s%==14 goto 14a if %s%==15 goto 15a if %s%==16 goto 16a if %s%==17 goto 17a if %s%==18 goto 18a if %s%==19 goto 19a if %s%==20 goto 20a if %s%==21 goto 21a if %s%==22 goto 22a if %s%==23 goto 23a if %s%==24 goto 24a if %s%==25 goto 25a if %s%==26 goto 26a :1a @echo The next letter is a pause goto number2 :2a @echo The next letter is b pause goto number2 :3a @echo The next letter is c pause goto number2 :4a @echo The next letter is d pause goto number2 :5a @echo The next letter is e pause goto number2 :6a @echo The next letter is f pause goto number2 :7a @echo The next letter is g pause goto number2 :8a @echo The next letter is h pause goto number2 :9a @echo The next letter is i pause goto number2 :10a @echo The next letter is j pause goto number2 :11a @echo The next letter is k pause goto number2 :12a @echo The next letter is l pause goto number2 :13a @echo The next letter is m pause goto number2 :14a @echo The next letter is n pause goto number2 :15a @echo The next letter is o pause goto number2 :16a @echo The next letter is p pause goto number2 :17a @echo The next letter is q pause goto number2 :18a @echo The next letter is r pause goto number2 :19a @echo The next letter is s pause goto number2 :20a @echo The next letter is t pause goto number2 :21a @echo The next letter is u pause goto number2 :22a @echo The next letter is v pause goto number2 :23a @echo The next letter is w pause goto number2 :24a @echo The next letter is x pause goto number2 :25a @echo The next letter is y pause goto number2 :26a @echo The next letter is z pause goto number2 1I edited pauls one:
@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 :generator @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! This works but doesn't quite act right when we recall it as sub. (i.e. unpredictably malfunctions when you call the subroutine :generator.
1This is a fully made version with 16 characters including uppercase, lowercase, and numbers. It's a rookie version so it doesn't include any complex commands like "for", but it works well. Only downside is it can lag and occasionally stop working if you generate too many lines.
@echo off title Random :trigger set trigger=16 :genKeys set /a trigger=%trigger% - 1 set /a choose=(%random%*3/32767)+1 if %choose% == 1 goto lowercase if %choose% == 2 goto uppercase if %choose% == 3 goto number :lowercase set /a lower=(%random%*25/32767)+0 if %lower% == 0 set gen%trigger%=a if %lower% == 1 set gen%trigger%=b if %lower% == 2 set gen%trigger%=c if %lower% == 3 set gen%trigger%=d if %lower% == 4 set gen%trigger%=e if %lower% == 5 set gen%trigger%=f if %lower% == 6 set gen%trigger%=g if %lower% == 7 set gen%trigger%=h if %lower% == 8 set gen%trigger%=i if %lower% == 9 set gen%trigger%=j if %lower% == 10 set gen%trigger%=k if %lower% == 11 set gen%trigger%=l if %lower% == 12 set gen%trigger%=m if %lower% == 13 set gen%trigger%=n if %lower% == 14 set gen%trigger%=o if %lower% == 15 set gen%trigger%=p if %lower% == 16 set gen%trigger%=q if %lower% == 17 set gen%trigger%=r if %lower% == 18 set gen%trigger%=s if %lower% == 19 set gen%trigger%=t if %lower% == 20 set gen%trigger%=u if %lower% == 21 set gen%trigger%=v if %lower% == 22 set gen%trigger%=w if %lower% == 23 set gen%trigger%=x if %lower% == 24 set gen%trigger%=y if %lower% == 25 set gen%trigger%=z if %trigger% == 0 goto keys goto genKeys :uppercase set /a upper=(%random%*25/32767)+0 if %upper% == 0 set gen%trigger%=A if %upper% == 1 set gen%trigger%=B if %upper% == 2 set gen%trigger%=C if %upper% == 3 set gen%trigger%=D if %upper% == 4 set gen%trigger%=E if %upper% == 5 set gen%trigger%=F if %upper% == 6 set gen%trigger%=G if %upper% == 7 set gen%trigger%=H if %upper% == 8 set gen%trigger%=I if %upper% == 9 set gen%trigger%=J if %upper% == 10 set gen%trigger%=K if %upper% == 11 set gen%trigger%=L if %upper% == 12 set gen%trigger%=M if %upper% == 13 set gen%trigger%=N if %upper% == 14 set gen%trigger%=O if %upper% == 15 set gen%trigger%=P if %upper% == 16 set gen%trigger%=Q if %upper% == 17 set gen%trigger%=R if %upper% == 18 set gen%trigger%=S if %upper% == 19 set gen%trigger%=T if %upper% == 20 set gen%trigger%=U if %upper% == 21 set gen%trigger%=V if %upper% == 22 set gen%trigger%=W if %upper% == 23 set gen%trigger%=X if %upper% == 24 set gen%trigger%=Y if %upper% == 25 set gen%trigger%=Z if %trigger% == 0 goto keys goto genKeys :number set /a number=(%random%*9/32767)+0 set gen%trigger%=%number% goto genKeys :keys cls echo %gen15%%gen14%%gen13%%gen12%%gen11%%gen10%%gen9%%gen8%%gen7%%gen6%%gen5%%gen4%%gen3%%gen2%%gen1%%gen0% pause >nul goto trigger