Ada diskusi di sini yang bisa Anda adaptasi untuk tujuan Anda.
@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 menjelaskan hal di atas:
Saya telah memodifikasinya sehingga Anda dapat dengan mudah menentukan panjang dan menambahkan atau menghapus karakter tanpa harus mengubah bagian lain dari kode.
Misalnya, Anda mungkin tidak ingin menggunakan 0 dan O (nol dan O huruf besar), atau 1 dan l (satu dan huruf kecil L).
Anda dapat menggunakan tanda baca kecuali untuk karakter ini:
! % ^ & < >
Anda dapat menggunakan ^
dan %
, tetapi harus memasukkannya dalam _Alphanumeric
variabel dua kali sebagai ^^ atau %%
. Namun, jika Anda ingin menggunakan hasilnya ( _RndAlphaNum
) nanti dalam file batch (selain Echoing ke layar), mereka mungkin memerlukan penanganan khusus.
Anda bahkan dapat menggunakan spasi, selama itu bukan karakter terakhir dalam string. Jika berakhir sebagai karakter terakhir dalam string yang dihasilkan, itu tidak akan digunakan, jadi Anda hanya akan memiliki 7 karakter.