批量生成随机字符串的脚本

wen 实用脚本 1

本文目录导读:

批量生成随机字符串的脚本

  1. Python版本(推荐)
  2. Linux/Unix Shell版本
  3. Windows Batch版本
  4. PowerShell版本
  5. 使用方法

Python版本(推荐)

import random
import string
def generate_random_string(length=8):
    """生成指定长度的随机字符串"""
    characters = string.ascii_letters + string.digits
    return ''.join(random.choice(characters) for _ in range(length))
def batch_generate(count=10, length=8, prefix='', suffix=''):
    """
    批量生成随机字符串
    :param count: 生成数量
    :param length: 字符串长度
    :param prefix: 前缀
    :param suffix: 后缀
    """
    strings = []
    for _ in range(count):
        random_str = generate_random_string(length)
        full_str = prefix + random_str + suffix
        strings.append(full_str)
    return strings
# 使用示例
if __name__ == "__main__":
    # 生成10个长度为8的随机字符串
    result = batch_generate(count=10, length=8)
    for i, s in enumerate(result, 1):
        print(f"{i}: {s}")
    print("\n--- 带前缀后缀的示例 ---")
    # 生成带前缀后缀的随机字符串
    result2 = batch_generate(count=5, length=6, prefix="TEST_", suffix="_2024")
    for i, s in enumerate(result2, 1):
        print(f"{i}: {s}")

高级功能版本:

import random
import string
import argparse
import sys
def generate_random_string(length=8, use_letters=True, use_digits=True, use_punctuation=False):
    """生成随机字符串,可自定义字符集"""
    chars = ''
    if use_letters:
        chars += string.ascii_letters
    if use_digits:
        chars += string.digits
    if use_punctuation:
        chars += string.punctuation
    if not chars:
        chars = string.ascii_letters + string.digits
    return ''.join(random.choice(chars) for _ in range(length))
def main():
    parser = argparse.ArgumentParser(description='批量生成随机字符串')
    parser.add_argument('-c', '--count', type=int, default=10, help='生成数量 (默认: 10)')
    parser.add_argument('-l', '--length', type=int, default=8, help='字符串长度 (默认: 8)')
    parser.add_argument('-p', '--prefix', default='', help='前缀')
    parser.add_argument('-s', '--suffix', default='', help='后缀')
    parser.add_argument('--no-letters', action='store_true', help='不使用字母')
    parser.add_argument('--no-digits', action='store_true', help='不使用数字')
    parser.add_argument('--punctuation', action='store_true', help='使用标点符号')
    parser.add_argument('-o', '--output', help='输出到文件')
    args = parser.parse_args()
    strings = []
    for _ in range(args.count):
        random_str = generate_random_string(
            args.length,
            use_letters=not args.no_letters,
            use_digits=not args.no_digits,
            use_punctuation=args.punctuation
        )
        strings.append(args.prefix + random_str + args.suffix)
    if args.output:
        with open(args.output, 'w') as f:
            f.write('\n'.join(strings))
        print(f"已写入 {args.count} 个字符串到 {args.output}")
    else:
        for i, s in enumerate(strings, 1):
            print(f"{i}: {s}")
if __name__ == "__main__":
    main()

Linux/Unix Shell版本

#!/bin/bash
# 随机字符串生成函数
generate_random() {
    local length=${1:-8}
    # 使用urandom生成随机字符串
    cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w "$length" | head -n 1
}
# 批量生成
batch_generate() {
    local count=${1:-10}
    local length=${2:-8}
    local prefix=${3:-""}
    local suffix=${4:-""}
    for ((i=1; i<=count; i++)); do
        random_str=$(generate_random "$length")
        echo "${prefix}${random_str}${suffix}"
    done
}
# 使用示例
echo "=== 生成10个8位随机字符串 ==="
batch_generate 10 8
echo -e "\n=== 带前缀后缀 ==="
batch_generate 5 6 "PREFIX_" "_2024"

更多shell版本:

#!/bin/bash
# 方法1:使用openssl
generate_ssl() {
    local length=${1:-8}
    openssl rand -base64 48 | tr -dc 'a-zA-Z0-9' | cut -c1-"$length"
}
# 方法2:使用/dev/urandom和head
generate_urandom() {
    local length=${1:-8}
    head /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c "$length"
    echo
}
# 方法3:结合date和随机数
generate_date_random() {
    local length=${1:-8}
    local rand_str=$(date +%s%N | md5sum | head -c "$length")
    echo "$rand_str"
}
# 主函数
main() {
    local count=${1:-10}
    local length=${2:-8}
    local method=${3:-"urandom"}  # urandom, ssl, date
    echo "生成 $count 个长度为 $length 的随机字符串 (方法: $method)"
    for ((i=1; i<=count; i++)); do
        case $method in
            ssl)    generate_ssl "$length" ;;
            date)   generate_date_random "$length" ;;
            *)      generate_urandom "$length" ;;
        esac
    done
}
# 运行
main "$@"

Windows Batch版本

@echo off
chcp 65001 >nul
echo 批量生成随机字符串
echo =====================
set /a count=10
set length=8
set prefix=
set suffix=
REM 生成随机字符串(简单实现)
for /l %%i in (1,1,%count%) do (
    set "str="
    setlocal enabledelayedexpansion
    for /l %%j in (1,1,%length%) do (
        set /a "rand=!random! %% 62"
        if !rand! lss 10 (
            set "char=!rand!"
        ) else if !rand! lss 36 (
            set /a "char=!rand! + 87"
            set "char=!char!"
            for /f %%c in ('cmd /u /c echo !char! ^| find /v ""') do set "char=%%c"
        ) else (
            set /a "char=!rand! + 29"
            for /f %%c in ('cmd /u /c echo !char! ^| find /v ""') do set "char=%%c"
        )
        set "str=!str!!char!"
    )
    echo !str!
    endlocal
)
echo.
echo 完成!
pause

PowerShell版本

# 批量生成随机字符串函数
function New-RandomStrings {
    param(
        [int]$Count = 10,
        [int]$Length = 8,
        [string]$Prefix = "",
        [string]$Suffix = "",
        [switch]$IncludeSpecialChars
    )
    $charSet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
    if ($IncludeSpecialChars) {
        $charSet += '!@#$%^&*()_+-=[]{}|;:,.<>?'
    }
    $results = @()
    for ($i = 0; $i -lt $Count; $i++) {
        $randomStr = -join ((1..$Length) | ForEach {
            $charSet[(Get-Random -Maximum $charSet.Length)]
        })
        $results += "$Prefix$randomStr$Suffix"
    }
    return $results
}
# 使用示例
$randomStrings = New-RandomStrings -Count 10 -Length 8
$randomStrings | ForEach-Object { Write-Host $_ }
# 带前缀后缀的示例
$customStrings = New-RandomStrings -Count 5 -Length 6 -Prefix "USER_" -Suffix "_2024"
$customStrings | ForEach-Object { Write-Host $_ }

使用方法

Python版本

# 基本使用
python random_strings.py
# 高级使用
python random_strings.py -c 20 -l 12 -p "ID_" -s "_2024" -o output.txt

Shell版本

# 赋予执行权限
chmod +x random_strings.sh
# 运行
./random_strings.sh
# 或指定参数
./random_strings.sh 20 12 urandom

根据需要选择适合的版本,Python版本功能最完善,Shell版本最适合Linux环境使用。

抱歉,评论功能暂时关闭!