ソースコード
@echo off setlocal call :random-color fg call :random-color bg color %fg%%bg% goto :EOF :random-color set /a rnd=1+(%RANDOM% %% 15) if %rnd%==10 (set rnd=A ) else if %rnd%==11 (set rnd=B ) else if %rnd%==12 (set rnd=C ) else if %rnd%==13 (set rnd=D ) else if %rnd%==14 (set rnd=E ) else if %rnd%==15 (set rnd=F) set %1=%rnd% goto :EOF
解説
%RANDOM%による乱数を使って、前景色と背景色を設定している。乱数は0~32767なので、15の余り(0~14)を使う。結果、rndは1~15となり、さらに16進数に直す。
サブルーチンの中の%1は、callしたときの値になるため、「set %1=%rnd%」は「set fg=F」などになる。
サブルーチンに設定させた%fg%と%bg%を使って、colorを実行している。