Wie macht man einen Briefkennwortgenerator im Batch?


9

Es fällt mir schwer herauszufinden, wie man einen Passwortgenerator mit zufälligen Buchstaben erstellt. Zum Beispiel ASWED-ASDWAD-EFEST. Bisher kann ich mit dem Code nur Zufallszahlen machen

@echo off

:password

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

PS: Mein Betriebssystem ist Windows Vista.

Jede Hilfe wird geschätzt.


Ich habe% RANDOM% zu cmd.exe in Windows NT hinzugefügt. Ich bin froh zu sehen, dass es immer noch nützlich ist.
Mosh

Antworten:


14

Hier gibt es eine Diskussion , die Sie für Ihre Zwecke anpassen können.

@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 erklärt Folgendes :

Ich habe es so geändert, dass Sie die Länge einfach angeben und Zeichen hinzufügen oder entfernen können, ohne einen anderen Teil des Codes ändern zu müssen.

Beispielsweise möchten Sie möglicherweise nicht sowohl 0 als auch O (Null und Großbuchstabe O) oder 1 und L (Eins und Kleinbuchstabe L) verwenden.

Sie können Interpunktion mit Ausnahme der folgenden Zeichen verwenden:

! % ^ & < >

Sie können ^und verwenden %, müssen diese jedoch _Alphanumeric zweimal als ^^ oder in die Variable eingeben %%. Wenn Sie das Ergebnis ( _RndAlphaNum) jedoch später in der Batchdatei verwenden möchten (außer Echo auf dem Bildschirm), ist möglicherweise eine spezielle Behandlung erforderlich.

Sie können sogar ein Leerzeichen verwenden, solange es nicht das letzte Zeichen in der Zeichenfolge ist. Wenn es jedoch als letztes Zeichen in der generierten Zeichenfolge endet, wird es nicht verwendet, sodass Sie nur 7 Zeichen haben würden.


Vielen Dank für die Hilfe. Ich bin ein bisschen neu im Batch, also habe ich mich gefragt, ob Sie mir helfen könnten, den Code zu interpretieren, den Sie mir gezeigt haben. Ich möchte es vereinfachen, damit ich sehen kann, welcher Code genau die zufälligen Buchstaben generiert, danke.
Mendez

1
Dies scheinen die primären nicht erklärenden Zeilen zu sein: Set /A _RND=_RND%%61- _RND wurde zuvor auf eine Zufallszahl gesetzt, und dies führt dann einen Modul 61 darauf aus, um eine Zahl zwischen 0 und 61 zu erhalten. SET _rndalphanum=!_Alphanumeric:~%_RND%,1! Anschließend wird ein Teilstring von _Alphanumeric an Position _RND für ausgeführt 1 Zeichen. Es wird also eine Zahl zwischen 0 und 61 gewählt und dann dieses Zeichen von A-Za-z gezogen. Sie können dann eine Alpha-Zeichenfolge aus zufälligen Zeichen erstellen, indem Sie den Vorgang wiederholen.
Paul

Es tut mir leid, dass ich in letzter Zeit nicht dabei war, aber ich danke Ihnen allen nochmals für Ihre Hilfe. Ich weiß das zu schätzen.
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
Können Sie der Antwort eine Erklärung hinzufügen?
ChrisF

Wenn Sie Code einfügen, markieren Sie bitte den Code und drücken Sie die Taste, die so aussieht, als würde { }sie das Lesen sehr erschweren.
Scott Chamberlain

1

Dies ist eine einfache und elegante Lösung dafür

@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

hier ist mein. Ameture, aber es funktioniert

@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

Wenn Sie Code einfügen, markieren Sie bitte den Code und drücken Sie die Taste, die so aussieht, als würde { }sie das Lesen sehr erschweren.
Scott Chamberlain

0

Ich habe Pauls eins bearbeitet:

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

Dies funktioniert, funktioniert aber nicht ganz richtig, wenn wir uns als Sub erinnern. (dh unvorhersehbare Fehlfunktionen beim Aufrufen des Unterprogramms: generator.


Ist das etwas anders als die Antwort von @ Paul?
Stevefestl
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.