Es gibt hier 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 das oben:
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ßbuchstaben O) oder 1 und l (ein und Kleinbuchstabe L) verwenden.
Sie können Satzzeichen mit Ausnahme der folgenden Zeichen verwenden:
! % ^ & < >
Sie können
^
und verwenden%
, müssen sie jedoch_Alphanumeric
zweimal als ^^ oder in die Variable eingeben%%
. Wenn Sie das result (_RndAlphaNum
) später in der Batchdatei verwenden möchten (außer Echo auf dem Bildschirm), ist möglicherweise eine besondere 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, so dass Sie nur 7 Zeichen haben würden.