Eu encontrei este gerador de senha de arquivo em lote :
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%
que coloco em um arquivo em lote: rand.bat No entanto, quando chamo rand.bat de outro arquivo em lote, a variável de ambiente pwd não está mais disponível. Como faço para persistir no arquivo de lote de chamada?
Sair do lote chamado implica um
Endlocal
que descarta todas as variáveis locais criadas.Para superar isso, inclua um
Endlocal
comando e , na mesma linha, repita o comando set.Devido ao complexo funcionamento interno do cmd.exe (que geralmente requer DelayedExpansion), esta linha está em ambos os escopos e pode, portanto, recriar o conteúdo da variável.