自分メモ:バッチで文字の色を変える


はじめに

バッチファイルのEchoで文字の色を変える方法が分かりましたので自分メモ

環境

Microsoft Windows [Version 10.0.19043.1348]
(2021年11月25日時点)

わかる方への簡単な説明

エスケープシーケンスを使用して文字色を変更しています。
やり方としてEscコード(\x1b)を直接ソースに埋め込みます。

サンプル

ソース

test.bat
@echo off

echo STYLE
echo Reset    [0m
echo Bold     [1mTrue[0m
echo Inverse  [7mTrue[0m
echo Underline[4mTrue[0m

echo Black    [30mTrue[0m
echo Red      [31mTrue[0m
echo Green    [32mTrue[0m
echo Yellow   [33mTrue[0m
echo Blue     [34mTrue[0m
echo Magenta  [35mTrue[0m
echo Cyan     [36mTrue[0m
echo White    [37mTrue[0m

echo Black    [40mTrue[0m
echo Red      [41mTrue[0m
echo Green    [42mTrue[0m
echo Yellow   [43mTrue[0m
echo Blue     [44mTrue[0m
echo Magenta  [45mTrue[0m
echo Cyan     [46mTrue[0m
echo White    [47mTrue[0m

echo Black    [90mTrue[0m
echo Red      [91mTrue[0m
echo Green    [92mTrue[0m
echo Yellow   [93mTrue[0m
echo Blue     [94mTrue[0m
echo Magenta  [95mTrue[0m
echo Cyan     [96mTrue[0m
echo White    [97mTrue[0m

echo Black    [100mTrue[0m
echo Red      [101mTrue[0m
echo Green    [102mTrue[0m
echo Yellow   [103mTrue[0m
echo Blue     [104mTrue[0m
echo Magenta  [105mTrue[0m
echo Cyan     [106mTrue[0m
echo White    [107mTrue[0m

ソース解説

上記のソースをコピペしても実現しません。
ちょっと工夫する必要があります。

カーソル位置の文字コードを見ていただくと、\x1bとなっていることが確認できると思います。
つまり、エディタなどで直接\x1bを埋め込むことで実現できます。

サクラエディタの場合のやり方としては、仮の文字列を置換する方法が考えられます。
仮文字として"ESC"を置き、置換で"\x1b"に置換します。