バッチでの簡易色変更関数
※実施は自己責任でお願いします。
[動作確認済みの環境]
・Windows7 Professional
[ソース]
・色変更サンプル.bat
@echo off setlocal call :echoc "c" "改行なし版" call :echocln "9" "改行あり版" pause exit /b 0 rem ::::::::::::::::::::::::::::::::::::::::::::: rem :: 色変更(改行なし) rem :: ※色番号に関してはbatヘルプ参照「help color」 rem :: ※表示テキストがファイル名となる都合上、半角「\/:*?"<>|」が出力できないため無理矢理変換を書ける rem :: rem :: [引数] rem :: %1 : 色番号 rem :: %2 : テキスト rem ::::::::::::::::::::::::::::::::::::::::::::: :echoc set TmpDir=%TEMP%\__echoc__ set DumpTxt=%~2 set DumpTxt=%DumpTxt:\=¥% set DumpTxt=%DumpTxt:/=/% set DumpTxt=%DumpTxt::=:% set DumpTxt=%DumpTxt:<=<% set DumpTxt=%DumpTxt:>=>% set DumpTxt=%DumpTxt:|=|% set DumpTxt=%DumpTxt:?=?% set DumpTxt=%DumpTxt:"=”% rem "←エディタ色表示用 rem 「*」置換は諦める if exist "%TmpDir%\" rd /s /q "%TmpDir%" md "%TmpDir%" pushd "%TmpDir%" <nul >"%DumpTxt%" cmd /k prompt $h findstr /a:%~1 "." "%DumpTxt%" nul popd rd /s /q "%TmpDir%" goto :EOF rem ::::::::::::::::::::::::::::::::::::::::::::: rem :: 色変更(改行あり) rem :: ※色番号に関してはbatヘルプ参照「help color」 rem :: ※表示テキストがファイル名となる都合上、半角「\/:*?"<>|」が出力できないため無理矢理変換を書ける rem :: rem :: [引数] rem :: %1 : 色番号 rem :: %2 : テキスト rem ::::::::::::::::::::::::::::::::::::::::::::: :echocln set TmpDir=%TEMP%\__echocln__ set DumpTxt=%~2 set DumpTxt=%DumpTxt:\=¥% set DumpTxt=%DumpTxt:/=/% set DumpTxt=%DumpTxt::=:% set DumpTxt=%DumpTxt:<=<% set DumpTxt=%DumpTxt:>=>% set DumpTxt=%DumpTxt:|=|% set DumpTxt=%DumpTxt:?=?% set DumpTxt=%DumpTxt:"=”% rem "←エディタ色表示用 rem 「*」置換は諦める if exist "%TmpDir%\" rd /s /q "%TmpDir%" md "%TmpDir%" pushd "%TmpDir%" <nul >"%DumpTxt%" cmd /k prompt $h findstr /a:%~1 "." "%DumpTxt%" nul popd rd /s /q "%TmpDir%" echo. goto :EOF
[その他]
・仕様上、tempフォルダを使用して色用のファイルを作成→削除を繰り返しているため、
HDD的にはよろしくない設計と思われる。
・はてな記法が引数を識別してくれてないようなので色がおかしいが気にしない。
[備考]
ファイル関数化?したいなら単純に名前部分を切り抜いてファイル作成すれば行けると思います。