批量密码生成器

批量密码生成器

我找到了这个批处理文件密码生成器

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%

我将其放入批处理文件中:rand.bat 但是当我从另一个批处理文件中调用 rand.bat 时,环境变量 pwd 不再可用。如何让它保留在调用批处理文件中?

答案1

退出被调用的批处理意味着Endlocal丢弃所有创建的局部变量。

为了克服这个问题,包括一个Endlocal命令和在同一条线上重复设置命令。

因为cmd.exe复杂的内部工作原理(通常需要 DelayedExpansion)此行在两个范围内,因此可以重新创建变量的内容。

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%
Endlocal & set "pwd=%pwd%" & goto :Eof

相关内容