как сделать генератор буквенных паролей в пакетном режиме?

26223
mendez

Мне трудно понять, как создать генератор паролей со случайными буквами в нем. Например, ASWED-ASDWAD-EFEST. Пока я могу делать случайные числа только с помощью кода

@echo off  :password  echo %random%-%random%-%random pause goto password 

PS: моя ОС Windows Vista.

вся помощь будет оценена.

7
Я добавил% RANDOM% к cmd.exe в Windows NT. Рад видеть, что это все еще полезно. mosh 6 лет назад 0

5 ответов на вопрос

9
Paul

Существует дискуссия здесь, что вы могли бы адаптировать для ваших целей.

@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 объясняет вышеизложенное:

Я изменил его, чтобы вы могли легко указывать длину и добавлять или удалять символы без необходимости изменения какой-либо другой части кода.

Например, вы можете не использовать и 0 и O (ноль и прописные буквы O), или 1 и l (один и строчные буквы L).

Вы можете использовать знаки препинания за исключением следующих символов:

! % ^ & < > 

Вы можете использовать ^и %, но должны ввести их в _Alphanumeric переменную дважды как ^^ или %%. Однако, если вы хотите использовать результат ( _RndAlphaNum) позже в командном файле (кроме вывода на экран), они могут потребовать специальной обработки.

Вы даже можете использовать пробел, если это не последний символ в строке. Если он окажется последним символом в сгенерированной строке, он не будет использоваться, поэтому у вас будет только 7 символов.

спасибо за помощь, я новичок в пакетном, поэтому мне было интересно, если вы могли бы помочь мне интерпретировать код, который вы мне показали. Я хочу упростить это, чтобы я мог видеть, какой код генерирует случайные буквы, спасибо. mendez 12 лет назад 0
Похоже, что это основные необъяснимые строки: `` `Set / A _RND = _RND %% 61``` - _RND ранее был установлен на случайное число, и затем он использует модуль 61 для получения числа между 0 и 61. `` `SET _rndalphanum =! _ Буквенно-цифровой: ~% _RND%, 1!` `` Затем выполняется подстрока _Alphanumeric в позиции _RND для 1 символа. Таким образом, он выбирает число от 0 до 61, а затем вытягивает этот символ из A-Za-z. Затем вы можете создать альфа-строку случайных символов, повторив процесс. Paul 12 лет назад 1
извините, я не был в последнее время, но еще раз спасибо всем вам, ребята, за вашу помощь, я ценю это. mendez 12 лет назад 0
3
drakfox
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% 
Можете ли вы добавить некоторые объяснения к ответу. ChrisF 11 лет назад 2
Когда вы вставляете код, пожалуйста, выделите его и нажмите кнопку, которая выглядит как `{}`, иначе это очень затруднит чтение. Scott Chamberlain 10 лет назад 0
0
jack

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 
Когда вы вставляете код, пожалуйста, выделите его и нажмите кнопку, которая выглядит как `{}`, иначе это очень затруднит чтение. Scott Chamberlain 10 лет назад 0
0
Josh

I 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 
0
John Doe
: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.

Это несколько отличается от ответа @ Paul? SteveFest 6 лет назад 0