Có một cuộc thảo luận ở đây mà bạn có thể thích nghi cho mục đích của bạn.
@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 giải thích những điều trên:
Tôi đã sửa đổi nó để bạn có thể dễ dàng chỉ định độ dài và thêm hoặc xóa các ký tự mà không phải thay đổi bất kỳ phần nào khác của mã.
Ví dụ: bạn có thể không muốn sử dụng cả 0 và O (0 và Uppercase O) hoặc 1 và l (một và chữ thường L).
Bạn có thể sử dụng dấu câu trừ các ký tự sau:
! % ^ & < >
Bạn có thể sử dụng ^
và %
, nhưng phải nhập chúng vào _Alphanumeric
biến hai lần là ^^ hoặc %%
. Tuy nhiên, nếu bạn muốn sử dụng kết quả ( _RndAlphaNum
) sau trong tệp bó (trừ Echoing ra màn hình), chúng có thể yêu cầu xử lý đặc biệt.
Bạn thậm chí có thể sử dụng một khoảng trắng, miễn là nó không phải là ký tự cuối cùng trong chuỗi. Nếu nó kết thúc là ký tự cuối cùng trong chuỗi được tạo, nó sẽ không được sử dụng, vì vậy bạn sẽ chỉ có 7 ký tự.