demo
echo test
call writeline "111" 2
call writeline "222"
echo test
writeline.bat
:writeline <"str"> <attr>
if "%2"=="" (
call ColorStr 0c 3 "%1" 1 2 1 ) else (
call ColorStr %2 3 "%1" 1 2 1
)
goto:eof
ColorStr.bat
:ColorStr <attr> <sp> <"str"> <bk> <sp> <enter>
%:::: | | | | | | %
%:::: 顏色 空格 字符串 退格 空格 回車換行 %
for %%a in (+%2 +%4 +%5 +%6) do (
if "%%a"=="+" echo 控制參數不能為空&exit/b
if %%a lss +0 echo 參數越界-&exit/b
if %%a geq +a echo 參數越界+&exit/b)
if %3 == "" echo 字符串不能為空&exit/b
pushd %tmp%&setlocal ENABLEEXTENSIONS
:: 將生成的臨時文件刪除
if exist "%~3?" del/a/q "%~3?">nul 2>nul
if %2 gtr 0 call:ColorStr_bs %2 sp " "&call set/p=%%sp%%<nul
:: 添加退格符
if %4 gtr 0 (call:ColorStr_bs %4 bk "") else set "bk="
call:ColorStr_bs %5 sp " "
set/p=%bk%%sp%<nul>"%~3"&findstr /a:%1 .* "%~3?" 2>nul
if not %6 equ 0 for /l %%a in (1 1 %6)do echo.
endlocal&popd&goto:eof
:ColorStr_bs
set "p="&for /l %%a in (1 1 %1)do call set "p=%%p%%%~3"
set "%2=%p%"&goto:eof
call:ColorStr 0c 3 "abcdef" 1 2 2
用0c色(淡紅色)依次輸出3個空格 abcdef: [光標左移1位] 2個空格 2個回車換行符。
控制台前景和背景顏色(color)
顏色屬性由兩個十六進制數字指定 -- 第一個為背景,第二個則為前景。每個數字可以為以下任何值之一:
0 = 黑色 8 = 灰色
1 = 藍色 9 = 淡藍色
2 = 綠色 A = 淡綠色
3 = 湖藍色 B = 淡淺綠色
4 = 紅色 C = 淡紅色
5 = 紫色 D = 淡紫色
6 = 黃色 E = 淡黃色
7 = 白色 F = 亮白色
例如: "COLOR fc" 在亮白色上產生淡紅色