1. Computer problem? Tech Support Guy is completely free -- paid for by advertisers and donations. Click here to join today! If you're new to Tech Support Guy, we highly recommend that you visit our Guide for New Members.

Random numbers and letters?

Discussion in 'Software Development' started by MikeSwim07, Feb 22, 2009.

Thread Status:
Not open for further replies.
Advertisement
  1. MikeSwim07

    MikeSwim07 Thread Starter

    Joined:
    Apr 28, 2007
    Messages:
    4,629
    Hello,

    How can I make a batch file that can create a random string of numbers and letters?

    Thanks
     
  2. -Fabez-

    -Fabez-

    Joined:
    Jul 28, 2008
    Messages:
    1,899
    You can use the random function to generate random numbers.

    Code:
    %random%
    
    Generating the random letters will be hard in batch, have you considered a different programming language ?
     
  3. MikeSwim07

    MikeSwim07 Thread Starter

    Joined:
    Apr 28, 2007
    Messages:
    4,629
    yeah I have used %random% before. Can you try it with batch to get random letters?
     
  4. TheOutcaste

    TheOutcaste

    Joined:
    Aug 7, 2007
    Messages:
    9,028
    Not that hard:
    Code:
    @Echo Off
    :: Generates semi-random alphanumeric character, upper/lower case A-z and 0-9
    Setlocal EnableDelayedExpansion
    Set _Alphanumeric=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
    [COLOR=DarkRed]Set _count=0
    :_loop
    Set /a _count+=1[/COLOR]
    SET _RND=%Random%
    :: Use (Number of characters-1) as the [COLOR=Blue]mod operand[/COLOR]. So for just 26 letters use 25 instead of 61
    Set /A _RND=_RND%%[COLOR=Blue]61[/COLOR]
    SET _rndalphanum=!_Alphanumeric:~%_RND%,1!
    Echo Random character is !_rndalphanum!
    [COLOR=DarkRed]If !_count! leq 21 goto _loop
    [/COLOR]
    The red lines are just to make it loop and output 20 characters at a time so you can see what it will generate.

    HTH

    Jerry
     
  5. MikeSwim07

    MikeSwim07 Thread Starter

    Joined:
    Apr 28, 2007
    Messages:
    4,629
    Oh I was wondering like a random string of characters like 8 characters long.
     
  6. TheOutcaste

    TheOutcaste

    Joined:
    Aug 7, 2007
    Messages:
    9,028
    Here ya go:
    Code:
    @Echo Off
    Setlocal EnableDelayedExpansion
    [COLOR=Blue]Set _RNDLength=8[/COLOR]
    [COLOR=DarkRed]Set _Alphanumeric=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789[/COLOR]
    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!
    
    I've modified it so you can easily specify the length, and add or remove characters without having to change any other part of the code.
    For example, you might not want to use both 0 and O (zero and Uppercase O), or 1 and l (one and lowercase L)
    You can use punctuation except for these characters:
    ! % ^ & < >
    You can use ^ and %, but must enter them in the _Alphanumeric variable twice as ^^ or %%. However, if you want to use the result (_RndAlphaNum) later in the batch file (other than Echoing to the screen), they might require special handling.

    You can even use a space, as long as it's not the last character in the string. If it ends up as the last character in the generated string though, it will not be used, so you would only have 7 characters.

    HTH

    Jerry
     
  7. MikeSwim07

    MikeSwim07 Thread Starter

    Joined:
    Apr 28, 2007
    Messages:
    4,629
    Thanks!

    Is it possible so that the string created is always 8 characters?
     
  8. TheOutcaste

    TheOutcaste

    Joined:
    Aug 7, 2007
    Messages:
    9,028
    The length of the resulting string is set by the Set _RNDLength=8 line. As long as you don't change that, or add a space or the 6 punctuation characters (! % ^ & < >) indicated to the Set _AlphaNumeric= line, it will always be 8.

    Jerry
     
  9. Sponsor

As Seen On
As Seen On...

Welcome to Tech Support Guy!

Are you looking for the solution to your computer problem? Join our site today to ask your question. This site is completely free -- paid for by advertisers and donations.

If you're not already familiar with forums, watch our Welcome Guide to get started.

Join over 733,556 other people just like you!

Loading...
Thread Status:
Not open for further replies.

Short URL to this thread: https://techguy.org/803268