आप बैच में एक अक्षर पासवर्ड जनरेटर कैसे बनाते हैं?


10

मुझे यह पता लगाने में मुश्किल समय आ रहा है कि इसमें यादृच्छिक अक्षरों के साथ पासवर्ड जनरेटर कैसे बनाया जाए। उदाहरण के लिए, ASWED-ASDWAD-EFEST। अब तक मैं केवल कोड का उपयोग करके यादृच्छिक संख्या बना सकता हूं

@echo off

:password

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

पुनश्च: मेरा ओएस विंडोज़ विस्टा है।

सभी मदद की सराहना की जाएगी।


मैंने विंडोज़ NT में cmd.exe को% RANDOM% जोड़ा। खुशी है कि यह अभी भी उपयोगी है।
मॉश

जवाबों:


14

यहाँ एक चर्चा है कि आप अपने उद्देश्यों के लिए अनुकूलित कर सकते हैं।

@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!

TheOccaste उपरोक्त बताते हैं:

मैंने इसे संशोधित किया है ताकि आप आसानी से लंबाई को निर्दिष्ट कर सकें और कोड के किसी अन्य भाग को बदलने के बिना वर्णों को जोड़ या हटा सकें।

उदाहरण के लिए, आप 0 और O (शून्य और अपरकेस ओ), या 1 और एल (एक और लोअरकेस एल) दोनों का उपयोग नहीं करना चाह सकते हैं।

आप इन वर्णों को छोड़कर विराम चिह्न का उपयोग कर सकते हैं:

! % ^ & < >

आप उपयोग कर सकते हैं ^और %, लेकिन उन्हें _Alphanumeric चर में ^ ^ या के रूप में दो बार दर्ज करना होगा %%। हालाँकि, यदि आप परिणाम ( _RndAlphaNum) को बाद में बैच फ़ाइल (स्क्रीन से इको करने के अलावा) में उपयोग करना चाहते हैं, तो उन्हें विशेष हैंडलिंग की आवश्यकता हो सकती है।

तुम भी एक अंतरिक्ष का उपयोग कर सकते हैं, जब तक कि यह स्ट्रिंग में अंतिम चरित्र नहीं है। यदि यह उत्पन्न स्ट्रिंग में अंतिम वर्ण के रूप में समाप्त होता है, तो इसका उपयोग नहीं किया जाएगा, इसलिए आपके पास केवल 7 वर्ण होंगे।


मदद के लिए धन्यवाद, मैं बैच के लिए नया हूं इसलिए मैं सोच रहा था कि क्या आप मुझे उस कोड की व्याख्या करने में मदद कर सकते हैं जो आपने मुझे दिखाया था। मैं इसे सरल बनाना चाहता हूं इसलिए मैं देख सकता हूं कि कोड वास्तव में यादृच्छिक अक्षरों को क्या बनाता है, धन्यवाद।
मेंडेज़

1
ये प्राथमिक गैर-व्याख्यात्मक पंक्तियाँ प्रतीत होती हैं: Set /A _RND=_RND%%61- _RND पहले एक यादृच्छिक संख्या के लिए सेट किया गया था, और इसके बाद यह एक मापांक 61 को 0 और 61 के बीच एक संख्या प्राप्त करने के लिए SET _rndalphanum=!_Alphanumeric:~%_RND%,1! करता है । यह तब स्थिति में _Alphanumeric का एक विकल्प करता है _RND के लिए 1 वर्ण। इसलिए यह 0 और 61 के बीच एक संख्या का चयन कर रहा है और फिर उस चरित्र को A-Za-z से खींच रहा है। फिर आप प्रक्रिया को दोहराकर यादृच्छिक वर्णों के एक अल्फा स्ट्रिंग का निर्माण कर सकते हैं।
पॉल

खेद है कि मैं हाल ही में नहीं गया, लेकिन आपकी मदद के लिए आप सभी लोगों के लिए फिर से धन्यवाद, मैं इसकी सराहना करता हूं।
Mendez

3
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
क्या आप उत्तर में कुछ स्पष्टीकरण जोड़ सकते हैं।
क्रिस एफआर

जब आप कोड पेस्ट करते हैं तो कृपया कोड को हाइलाइट करना सुनिश्चित करें और जैसा दिखता है वैसा बटन दबाएं { }अन्यथा यह पढ़ने में बहुत कठिन हो जाता है।
स्कॉट चैम्बरलेन

1

यह इसका एक सरल और सुरुचिपूर्ण समाधान है

@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

0

यह रहा मेरा। अमेचर, लेकिन यह काम करता है

@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

जब आप कोड पेस्ट करते हैं तो कृपया कोड को हाइलाइट करना सुनिश्चित करें और जैसा दिखता है वैसा बटन दबाएं { }अन्यथा यह पढ़ने में बहुत कठिन हो जाता है।
स्कॉट चेम्बरलेन

0

मैंने पल्स को एक संपादित किया:

@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
: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!

यह काम करता है, लेकिन जब हम इसे उप के रूप में याद करते हैं तो यह सही नहीं होता है। (जब आप सबरूटीन को कहते हैं तो अप्रत्याशित रूप से खराबी: जनरेटर।


क्या यह @ पॉल के उत्तर से कुछ अलग है?
स्टीववेस्टल

0

यह पूरी तरह से बनाया गया संस्करण है जिसमें 16 अक्षर हैं, जिनमें अपरकेस, लोअरकेस और संख्याएं शामिल हैं। यह एक धोखेबाज़ संस्करण है, इसलिए इसमें "जैसे" के लिए कोई भी जटिल कमांड शामिल नहीं है, लेकिन यह अच्छी तरह से काम करता है। केवल नकारात्मक पक्ष यह है कि अगर आप बहुत सी लाइनें उत्पन्न करते हैं तो कभी-कभी काम करना बंद कर सकते हैं।

@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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.