Windowsのバッチ処理でランダムな文字列を生成する

toc目次

はじめに

任意の文字数のランダム文字列を生成するバッチファイルのサンプルです。

ランダムな文字列を生成するバッチ

下記スクリプトは、chars変数に含まれる文字セットからランダムに文字を選び、length変数で指定された長さのランダムな文字列を生成して画面に表示します。

@echo off
setlocal enabledelayedexpansion

:: 文字セットを定義
set "chars=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

:: 生成する文字列の長さ
set "length=10"

:: ランダム文字列を初期化
set "randomString="

:: 文字セットの長さを取得する
set "str=!chars!"
set set "len=0"

:loop
if defined str (
    set "str=!str:~1!"
    set /a "len+=1"
    goto loop
)

:: 指定された長さのランダム文字列を生成
for /L %%i in (1, 1, %length%) do (
    set /a "randIndex=!random! %% !len!"
    call set "randomChar=%%chars:~!randIndex!,1%%"
    set "randomString=!randomString!!randomChar!"
)

:: 結果を表示
echo %randomString%

pause
rcUtcgkXJD
続行するには何かキーを押してください . . .

ランダムな文字列の文字数を変更する

length変数の値を変更すると、生成するランダム文字列の長さを調節できます。

:: (前略)

:: 生成する文字列の長さ
set "length=20"

:: (後略)
8jH01vBm6nWiSCX9hfFK
続行するには何かキーを押してください . . .

クリップボードにコピーする

echo %randomString%」を「echo %randomString% | clip」に変更し、pauseコマンドを削除すると、バッチファイル実行時にランダム文字列がクリップボードにコピーされます。

:: (前略)

:: 結果をクリップボードに格納
echo %randomString% | clip

:: pauseコマンドをコメントアウト
:: pause