बैच फ़ाइल पासवर्ड जनरेटर लगातार उत्पादन नहीं दे रहा है


1

मेरे पास यह कोड है। इसका मूल रूप से एक यादृच्छिक पासवर्ड जनरेटर है। मैं पासवर्ड की लंबाई दर्ज करता हूं, जिसे मैं "10" कहना चाहता हूं, फिर मुझे 10 अक्षरों की संख्या और प्रतीकों के साथ उत्पन्न एक यादृच्छिक पासवर्ड मिलता है और इसे एक txt फ़ाइल में सहेजा जाता है। मुद्दा तब होता है जब मैं एक दूसरा बनाता हूं। अगर मुझे फिर से "10" की पासवर्ड लंबाई चाहिए, लेकिन यह मुझे केवल 3 या 4 कहने का पासवर्ड देता है, तो यह निर्भर करता है। इस पर मैं कहाँ गलत हो गया कोई विचार ?? किसी भी प्रकार की मदद की बेहद सराहना की जाती है।

@Echo Off
mode con: cols=70 lines=25
:start
color 8a
echo ----------------------------------------------------------------------
echo --------                  Password Generator                   -------
echo ----------------------------------------------------------------------
echo.
echo.
Echo Hello %username%
set /P lengthnumberuser="What length do you want your password to be?:
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.
echo.
echo.
cls
Echo Password is: !_RndAlphaNum!
set /p _detail=Please Record a description for this password:
echo.
echo %date%---%_detail%----!_RndAlphaNum! >> RandPass.txt
echo Password Saved with Details to RandPass.txt for future reference.
echo.
echo.
set /p _newpass= Would you like to create another password ?[y/n]:
cls

If /i "%_newpass%"== "y" GOTO :start else :end

:end

के %_RNDLength%साथ बदलने की कोशिश करें!_RNDLength!
डेविडपोस्ट

हाय मैं बदल गया है कि यहाँ If !_count! lss %_RNDLength% goto _loopऔर अभी भी कोई भाग्य 10 के आसपास पहली बार दिया .. केवल यह 5 अंक दूसरी बार
हारून राइस

तुम भी बदलनी होगी Set /a _count+=1करने के लिएSet /a !_count!+=1
DavidPostill

जवाबों:


1

मुझे चर नामों को अधिक पसंद नहीं है, लेकिन यह काम करता है:

@Echo Off
mode con: cols=70 lines=25
:start
color 8a
echo ----------------------------------------------------------------------
echo --------                  Password Generator                   -------
echo ----------------------------------------------------------------------
echo.
echo.
Echo Hello %username%
set /P len="What length do you want your password to be?:
cls
Setlocal EnableDelayedExpansion
Set "Chars=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789$@*"
Set CharsCnt=65
Set "Pass="
For /L %%c in (1,1,%Len%) do (
  Set /a Pnt=!Random! %% CharsCnt
  Call Set "Pass=!Pass!%%Chars:~!Pnt!,1%%"
)
cls
Echo Password is: %Pass%
set /p _detail=Please Record a description for this password:
echo.
echo %date%---%_detail%----%Pass% >> RandPass.txt
echo Password Saved with Details to RandPass.txt for future reference.
echo.
echo.
set /p _newpass= Would you like to create another password ?[y/n]:
cls
If /i "%_newpass%"== "y" GOTO :start
:end

BTW: कई खाली लाइनों और फिर एक cls outputting मेरे लिए कोई मतलब नहीं है।


आपके इनपुट की कोशिश की और जो आउटपुट मुझे मिला वह यह था कि दोनों को 10 वर्ण लंबा होना चाहिए 1 प्रयास = j5 @ llZ2v% शुल्क: ~ 37,1, दूसरा प्रयास = GrXlqKMpj
एरॉन राइस

मुझे लगता है कि प्रतिशत संकेत परेशानी पैदा कर रहा है। मैंने उसे चारपाई से हटा दिया। जब यह पासवर्ड में होता है तो इसे एक अतिरिक्त चर को संलग्न करने के रूप में व्याख्या नहीं करने के लिए बचना होगा।
लोटपिंग्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.