The code is pretty self-explanatory, so here goes:
@echo off setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION :: This is used to specify the required length of the random string set len=12 :: This specifies the characters that will be used to generate the random string set charpool=0123456789ABCDEF :: This specifies the length of the character pool above used to generate the string set len_charpool=16 set gen_str=
:: Loop %len% times
for /L %%b IN (1, 1, %len%) do (
:: %RANDOM% / !RANDOM! is replaced with a random variable between 0 and 32768
:: This is used as our source of randomness so we use some simple math to
:: restrict the random range to be within the length of len_charpool
set /A rnd_index=!RANDOM! * %len_charpool% / 32768
:: Use for to allow us to expand and use the variable with batch's substring
:: functionality, and append the substring at the random index determined above
:: to the gen_str variable. See set /? for more information. for /F %%i in ('echo %%charpool:~!rnd_index!^,1%%') do set gen_str=!gen_str!%%i ) :: The random string has been generated and stored in %gen_str% echo %gen_str%