トップ 履歴 一覧 カテゴリ ソース 検索 ヘルプ RSS ログイン

WinBat/ColoredEcho

INDEX

(エスケープ シーケンス を使わず)バッチファイルで文字色と背景色を変えて文字列を表示する。

文字色と背景色を変えて文字列を表示

findstr コマンドが /a オプションで、結果のファイル名に色を付けられる。

これを利用し、色を付けたい文字列がファイル名のファイルを作成して、findstr で検索し、色付きの文字列を表示する(ファイル名の後ろにコロンや、検索文字列も出るので、それらは BS で削除)。

  cecho.cmd (色付き ECHO コマンド)

@echo off
setlocal
if not defined color set color=c
md ___
pushd ___
<nul >"%*" cmd /k prompt $h
findstr /a:%color% "." "%*" nul
popd
rd /s /q ___

  使用方法

set color=《背景色文字色》
call cecho.cmd 《テキスト》

「背景色文字色」は、color /? を参照。「テキスト」にはファイル名に使えない文字は使えない。また、cecho.cmd は、カレントディレクトリ もしくは パスが通った場所に置いておく。

  使用例

「青赤黄」をその色で出します。続けて背景色で出します。

@echo off
setlocal

set color=9
call cecho 青
set color=c
call cecho 赤
set color=e
call cecho 黄

set color=90
call cecho 青
set color=c0
call cecho 赤
set color=e0
call cecho 黄

資料

C:\> color /?
コンソールの既定の前景色と背景色を設定します。

COLOR [属性]

  属性        コンソール出力の色属性を指定します。

色属性は、2 桁の 16 進数で指定します。
1 桁目は背景に、2 桁目は前景に対応します。
各桁には、次のいずれかの値を指定することができます:

    0 = 黒          8 = 灰色
    1 = 青          9 = 明るい青
    2 = 緑          A = 明るい緑
    3 = 水色        B = 明るい水色
    4 = 赤          C = 明るい赤
    5 = 紫          D = 明るい紫
    6 = 黄色        E = 明るい黄色
    7 = 白          F = 輝く白

引数を指定しないでこのコマンドを実行すると、CMD.EXE が起動されたときの
色を復元します。
この値は、現在のコンソール ウィンドウ、/T コマンド ライン スイッチ、
またはレジストリの DefaultColor 値から取得されます。

前景と背景に同じ色を指定して COLOR コマンドを実行しようとすると、
COLOR コマンドは、ERRORLEVEL を 1 に
設定します。

例: "COLOR fc" は、輝く白の上に明るい赤を表示します。

C:\>
C:\> findstr /?
ファイルから文字列を検索します。

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P]
        [/F:ファイル] [/C:文字列] [/G:ファイル] [/D:ディレクトリ一覧]
        [/A:色属性] [/OFF[LINE]] 文字列 [[ドライブ:][パス]ファイル名[ ...]]

  /B           行の先頭にあるパターンを検索します。
  /E           行の末尾にあるパターンを検索します。
  /L           検索文字列をリテラルとして使用します。
  /R           検索文字列を正規表現として使用します。
  /S           現在のディレクトリとすべてのサブディレクトリから一致する
               ファイルを検索します。
  /I           検索するときに大文字と小文字を区別しません。
  /X           完全に一致する行を出力します。
  /V           一致しない行のみを出力します。
  /N           一致する各行の前に行番号を出力します。
  /M           ファイルに一致する行があるときに、ファイル名のみを出力します。
  /O           一致する各行の前に文字オフセットを出力します。
  /P           印刷不可能な文字を含むファイルをスキップします。
  /OFF[LINE]   オフライン属性が設定されたファイルをスキップしません。
  /A:属性      2 桁の 16 進数で色属性を指定します。"color /?" を参照してくだ
               さい。
  /F:ファイル  指定したファイルからファイル一覧を読み取ります (/ を指定する
               とコンソール)。
  /C:文字列    指定された文字列をリテラル検索文字列として使用します。
  /G:ファイル  指定されたファイルから検索文字列を取得します (/ を指定する
               とコンソール)。
  /D:ディレクトリ
               セミコロンで区切られた検索されるディレクトリ文字列テキストの
               一覧を検索します。
  [ドライブ:][パス]ファイル名
               検索するファイルを指定します。

複数の文字列を検索する場合には、引数 /C を使わず、各文字列をスペースで区切り
ます。
たとえば、FINDSTR "hello there" x.y と指定した場合は、ファイル x.y で "hello"
または "there" が検索されます。
これに対して、FINDSTR /C:"hello there" x.y と指定した場合はファイル x.y で
"hello there" が検索されます。

正規表現クイック リファレンス:
  .            ワイルドカード: 任意の文字
  *            繰り返し: ゼロ個以上の直前の文字またはクラス
  ^            行位置: 行頭
  $            行位置: 行末
  [class]      文字クラス: セットの任意の 1 文字
  [^class]     逆クラス: セット以外の任意の 1 文字
  [x-y]        範囲: 指定した範囲の任意の文字
  \x           エスケープ: メタ文字 x のリテラル使用
  \<xyz        単語位置: 単語の先頭
  xyz\>        単語位置: 単語の終わり

FINDSTR の詳細な正規表現に関しては、オンライン ヘルプのコマンド リファレンスを
参照してください。

C:\>
C:\> prompt /?
cmd.exe のコマンド プロンプトを変更します。

PROMPT [文字列]

  文字列    新しいコマンド プロンプトを指定します。

PROMPT には通常の文字と次に示す特殊コードを使用できます:

  $A   & (アンパサンド)
  $B   | (パイプ)
  $C   ( (左かっこ)
  $D   現在の日付
  $E   エスケープ コード (ASCII コードの 27)
  $F   ) (右かっこ)
  $G   > (不等号 (より大))
  $H   バックスペース (直前の文字を削除します)
  $L   < (不等号 (より小))
  $N   現在のドライブ
  $P   現在のドライブとパス
  $Q   = (等号)
  $S     (空白)
  $T   現在の時刻
  $V   Windows のバージョン番号
  $_   キャリッジ リターンとラインフィード
  $$   $ (ドル記号)

コマンド拡張機能を有効にすると、PROMPT コマンドは、次の追加の書式
文字をサポートするようになります:

  $+   PUSHD ディレクトリ スタックの深さに応じて、0 個以上のプラス
       記号 (+) を指定します。1 個のプラス記号が、プッシュされた
       1 レベルを表します。

  $M   現在のドライブ文字に関連付けられているリモート名を表示します。
       現在のドライブがネットワーク ドライブでない場合は、空の文字列
       を表示します。

C:\>

最終更新時間:2026年05月20日 11時14分46秒 指摘や意見などあればSandBoxのBBSへ。