如何批量生成一系列具有一定字符长度的随机字母和数字?

时间:2016-12-27 16:58:34

标签: batch-file

我正在尝试制作一个程序,使一系列随机字母和数字,大写和小写。有没有办法可以让我的代码成为可能?

@echo off
title random password gen
:Start
cls && set choice=0
echo (type 0 to exit)
echo.

echo 1 Random Password
echo 5 Random Passwords
echo 10 Random Passwords

set /p input= quantity:
if %input%==0 exit
if %input%==1 set /a choice=%choice%+1 && goto a
if %input%==2 goto set /a choice=%choice%+5 && goto a
if %input%==3 goto set /a choice=%choice%+10 && goto a
goto start
:a

cls

if %choice%==1 echo your password is %random%
if %choice%==5 echo your 5 passwords are %random%, %random%, %random%, %random%, %random%.
if %choice%==10 echo your 10 passwords are %random%, %random%, %random%, %random%, %random%,%random%, %random%, %random%, %random%, %random%.
pause
echo press any key to continue to menu... && pause nul> && goto menu

1 个答案:

答案 0 :(得分:0)

  • 您正在错误地使用成功&&的条件执行。至 在一行上有两个命令只使用一个&
  • %Random%返回0到32768之间的数字。请参阅 ss64.com/nt/syntax-random.html
  • 因为有外部程序,var选择有点麻烦 choice.exe
  • 如果您没有将%random%存储到var中,则会丢失,下次%random% 获得不同的价值。

以下批次将生成随机名称/密码

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
Set "Chars=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

:: get one char from the first 26(Uppercase) and append to var Name
Call :RandChar 26 Name

:: get 14 chars from all Chars and append to var Name
For /L %%A in (1,1,14) Do Call :RandChar 62 Name

Echo %Name%
Goto :Eof

:RandChar Range Var
Set /A Pnt=%Random% %% %1
Set %2=!%2!!Chars:~%Pnt%,1!
Goto :Eof

powerShell中的相同内容更简单:

$chars = [char[]]"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
$Password = [string](($chars[0..25]|Get-Random)+(($chars|Get-Random -Count 14) -join ""))