17个显示彩色字符和动画的批处理代码(一)

网友投稿 1886 2022-09-16

17个显示彩色字符和动画的批处理代码(一)

17个显示彩色字符和动画的批处理代码(一)

与Linux和Mac的终端相比,Windows的命令行界面显得单调乏味,因为缺乏适当的彩色处理机制。试想,若我们的批处理能够输出绚丽的彩色文字,文本就会容易阅读,画面也更加活泼,批处理的逼格原地提升。

以下我从中外网络上收集来的、能显示彩色字符和动画的批处理代码,能汉化的都尽量汉化,记录于此,并向原作者表示感谢。

如果用记事本编辑批处理,要以ANSI编码保存,不要用默认的UTF-8。

本文所有批处理和程序的​​压缩包-。​​

代码1:仅适用于Win10的彩色显示批处理。语法简单易用。

ANSI Colors in standard Windows 10 shell

@echo off::ANSI Colors in standard Windows 10 shell::65001 UTF-8::chcp 936 GBK::chcp 437 美国英语chcp 65001setlocalcall :setESCclsecho %ESC%[101;93m 样 式 %ESC%[0mecho ^[0m %ESC%[0m 复位 %ESC%[0mecho ^[1m %ESC%[1m 黑体 %ESC%[0mecho ^[7m %ESC%[7m 反向 %ESC%[0mecho ^[4m %ESC%[4m 下划线 %ESC%[0mecho.echo %ESC%[101;93m 标准前景色 %ESC%[0mecho ^[30m %ESC%[30m黑色%ESC%[0m (黑色)echo ^[31m %ESC%[31m红色%ESC%[0mecho ^[32m %ESC%[32m绿色%ESC%[0mecho ^[33m %ESC%[33m黄色%ESC%[0mecho ^[34m %ESC%[34m蓝色%ESC%[0mecho ^[35m %ESC%[35m洋红%ESC%[0mecho ^[36m %ESC%[36m青色%ESC%[0mecho ^[37m %ESC%[37m白色%ESC%[0mecho.echo %ESC%[101;93m 标准背景色 %ESC%[0mecho ^[40m %ESC%[40m黑色%ESC%[0mecho ^[41m %ESC%[41m红色%ESC%[0mecho ^[42m %ESC%[42m绿色%ESC%[0mecho ^[43m %ESC%[43m黄色%ESC%[0mecho ^[44m %ESC%[44m蓝色%ESC%[0mecho ^[45m %ESC%[45m洋红%ESC%[0mecho ^[46m %ESC%[46m青色%ESC%[0mecho ^[47m %ESC%[47m白色%ESC%[0m (白色)echo.echo %ESC%[101;93m 高强度前景色 %ESC%[0mecho ^[90m %ESC%[90m白色%ESC%[0mecho ^[91m %ESC%[91m红色%ESC%[0mecho ^[92m %ESC%[92m绿色%ESC%[0mecho ^[93m %ESC%[93m黄色%ESC%[0mecho ^[94m %ESC%[94m蓝色%ESC%[0mecho ^[95m %ESC%[95m洋红%ESC%[0mecho ^[96m %ESC%[96m青色%ESC%[0mecho ^[97m %ESC%[97m白色%ESC%[0mecho.echo %ESC%[101;93m 高强度背景色 %ESC%[0mecho ^[100m %ESC%[100m黑色%ESC%[0mecho ^[101m %ESC%[101m红色%ESC%[0mecho ^[102m %ESC%[102m绿色%ESC%[0mecho ^[103m %ESC%[103m黄色%ESC%[0mecho ^[104m %ESC%[104m蓝色%ESC%[0mecho ^[105m %ESC%[105m洋红%ESC%[0mecho ^[106m %ESC%[106m青色%ESC%[0mecho ^[107m %ESC%[107m白色%ESC%[0mecho.echo %ESC%[101;93m 颜色组合 %ESC%[0mecho ^[31m %ESC%[31m红色前景色%ESC%[0mecho ^[7m %ESC%[7m反转前景色 ^<-^> 背景色%ESC%[0mecho ^[7;31m %ESC%[7;31m反转31m红色,也就是黑底红字变为红底黑字%ESC%[0mecho ^[7m 和嵌套 ^[31m %ESC%[7m前半部分定义了反转显示 %ESC%[31m所以后半部分的31m红色也跟着反转显示%ESC%[0mecho ^[31m 和嵌套 ^[7m %ESC%[31m 前半部分是31m红色%ESC%[7m后半部分因为定义了7m,所以在前半部分的基础上反转显示%ESC%[0mpause:setESCfor /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do ( set ESC=%%b exit /B 0)exit /B 0

批处理的语法是:

echo %ESC%[106m青色

也可以在WIN10命令行直接输入,但需要使用技巧:按住ALT键的同时按小键盘数字027会出现字符^[,这是控制码,表明之后要给出颜色码。再输入颜色代码,比如[41;37m,最后输入要显示的字符串,如红色!,例如:

按键输入:echo空格(ALT+027)[41;37m红色!

或者另一个技巧:echo空格(Ctrl+[)[41;37m红色!

完整的命令行(为了便于理解,用颜色区分不同的部分,非显示效果):

红色背景,白色前景:echo ^[[41;37m红色!

重置所有属性:echo ^[[0m

更多的转义符含义,见MSDN文章:

​​Console Virtual Terminal Sequences​​

ANSI转义序列中以 ESC [ 开头的叫作 Control Sequence Introducer,简称 CSI。以 CSI 开头的指令有很多,大致可分四类:光标移动指令、清屏指令、字符渲染(Graphic Rendition)指令和终端控制指令。

字符渲染指令SGR(Select Graphic Rendition)的格式为 CSI n m,以数字开头,并以 m 结尾,n 的取值范围是 0-107。又可以分成两类,一类控制字符显示样式,另一类控制显示颜色。

最初的规格只有8种颜色,因为数量少,就给每种颜色起了英文名字:

Red-红色 Black-黑色 Green-绿色 Yellow-黄色 Blue-蓝色 Magenta-洋红 Cyan-青色 White-白色

后来显卡的性能加强了,能显示8bit颜色,无法给每种颜色起名了,于是用数字预定义了256种色彩。

详细的调色板信息见​​这里。​​

显示8bit - 256颜色:

8bit,256位颜色调用语法:ESC[38;5;⟨n⟩m 前景色ESC[48;5;⟨n⟩m 背景色其中的 n 填入不同的数字代表不同的颜色。       0-7:  标准颜色  ESC[30–37m     8- 15:  高强度颜色:ESC[90–97m  16-231:  216种颜色: 16+36×r+6×g+b (0≤r, g, b≤5) 232-255:  24种不同的灰度

​举例,以背景色54,前景色226显示字符串Hello!:

echo ^[[48;5;54;38;5;226mHello!

再后来能显示24bit真彩色了,颜色数量之庞大也无法用查表的方法去找预定义的颜色,干脆直接写RGB分量了。

显示24bit-16M色。

24bit颜色调用语法 ESC[ 38;2;⟨r⟩;⟨g⟩;⟨b⟩m 前景色 ESC[ 48;2;⟨r⟩;⟨g⟩;⟨b⟩m 背景色

举例:以背景色0,147,147,前景色242,242,242显示字符串ABC:

echo ^[[48;2;0;147;147;38;2;242;242;242mABC

16M色颜色数量庞大,对应标准颜色的RGB值可在​​这里​​查看,或者截图如下:

注:更多的终端控制符的细节见这几篇文章:

​​ANSI转义序列详解​​

​​List of ANSI color escape sequences​​

​​控制序列​​

代码2:仅适用于WIN10,原理同上,但换了一种技巧。

echo.与[41;37m之间的控制码是在Notepad++里输入的,方法就是ALT+小键盘的27,也就是下图的ESC。

用Notepad++编辑:

@echo OFF::本文用Notepad++编辑::如果显示汉字,就置代码页为UTF-8chcp 65001mode con cols=80 lines=25color fecho.[41;37m红色! [42;37m绿色! [43;37m黄色! [44;37m蓝色! [45;37m洋红! [46;37m青色! [47;30m白色!echo.[40;31m 红色 [40;32m 绿色 [40;33m 黄色 [40;34m蓝色! [40;35m洋红 [40;36m 青色 [40;37m 白色!echo.[41;37m [42;37m [43;37m [44;37m [45;37m [46;37m [47;37m echo.[47;37m [46;37m [45;37m [44;37m [43;37m [42;37m [41;37m pause >nul::前景色::30 黑色::31 红色::32 绿色::33 黄色::34 蓝色::35 洋红::36 青色::37 白色 ::背景色::40 黑色::41 红色::42 绿色::43 黄色::44 蓝色::45 洋红::46 青色::47 白色

代码3:可用于WIN7的ANSI色彩实用程序cmdcolor.exe

以上2段代码只能由WIN10支持。利用cmdcolor.exe这款实用程序,可以让WIN7也支持输出ANSI色彩标准的字符串。

作者链接:​​| cmdcolor.exe

cmd /c your-batch.bat | cmdcolor.exe

cscript your-script.js | cmdcolor.exe

参数:

[m

  转义符 \033。   分号(;) 8/16色分隔列表,顺序任意,可接受的数字包括:[30~37],[40~47],[90~97],[100~107]以上这些数字的含义参见本文的第一个代码,或者这个​​链接。​​   要显示的文本。

举例说明:

echo \033[31m RED ON DEFAULT | cmdcolor.exe

echo \033[41m DEFAULT ON RED | cmdcolor.exe

echo \033[34;43m BLUE ON YELLOW | cmdcolor.exe

echo \033[34;43;35m MAGENTA ON YELLOW | cmdcolor.exe

echo \033[96m LIGHT CYAN \033[0m DEFAULT | cmdcolor.exe

@ECHO OFFIF [%1] == [PIPE] ( GOTO :LOOP) ELSE ( CALL %0 PIPE | cmdcolor.exe GOTO :EOF):LOOPECHO \033[31mRED ON DEFAULTCALL :SLEEPECHO \033[41mDEFAULT ON REDCALL :SLEEPGOTO :LOOP:SLEEPping 1.2.3.4 -n 1 -w 1000 >NULGOTO :EOF

代码4:可用于WIN7的ANSI色彩实用程序ansicon.exe

在计算机产业浑沌初开的DOS时代,有一个名为ANSI.SYS的驱动,通过配置文件CONFIG.SYS在系统启动时加载,能够提供彩色字符的输出能力。该程序时至今日仍然可以使用,但已经有人注意到它使现代的Windows CLI在某些地方出现了错误。

Ansicon从本质上说是ANSI.SYS在WINDOWS时代的替代品,能够在命令行解析ANSI色彩控制代码。它有三种运行模式:

独立模式 ( ansicon.exe -p ...):单次运行。引导模式 ( ansicon.exe -i)。安装于系统,每次开机都起作用。手动模式:把文件添加到自定义的PATH环境变量包含的路径(注意32位和64位是不同的程序),可以在需要的时候手动运行。

参数:

不带参数运行:启用一个新的CMD进程,或在重定向的情况下显示stdin。

程序名:指定一个程序。

-i 或 -I:安装于Windows系统。前者作用于用户,后者作用于主机(如果权限允许)。

-u 或 -U:卸载并删除文件。

-l :在 %TEMP%\ansicon.log 之下记录日志。如果在使用中碰到某些问题可以找日志分析。

-p:启用父进程(即运行ANSICON的Shell)以识别转义。将“d:\path\to\ansicon.exe-p”添加到启动组(最小化运行以避免控制台窗口闪烁)。这意味着由资源管理器启动的任何控制台程序都将自动具有输出彩色字符的能力。

-m:使用m后面跟的数值(COLOR /?查看)作为默认颜色。如果m后面没有数值,就用黑底灰字作为默认颜色。

-e:显示字符串

-E:显示字符串,不换行

-t:显示每个列出的文件或标准输入,如果是后者,文件名留空或者是 -

-T:以这样的豪华姿势显示文件名:`==> FILE NAME <==`,后面跟文件内容

举例:

用青底黑色作为默认颜色显示文件内容:ansicon -m30 -t abc.txt

以反向的f0色彩显示文件内容:ansicon -m-f0 -t abc.txt

以f0色彩显示2个文件的内容:type abc.txt cba.txt|ansicon -p -mf0 -t

直接显示彩色字符:ansicon -p -e ^[[42;37mHello!

(色彩控制码输入方法见本文第1、2段代码)

使用 -i 或 -I 安装软件,会在注册表添加AutoRun条目,每次开机自动运行。之后命令提示符界面,或者由CMD.EXE启动的程序将获得输出彩色字符能力。

使用 -u 或 -U 卸载软件,将从注册表中删除AutoRun条目,并删除程序本身。

如果用“d:\path\to\ansicon.exe -p启动了程序,就用“d:\path\to\ansicon.exe -pu”从资源管理器中卸载程序。

也可以手动从PATH路径中删除程序,不会有任何东西残留于系统,除非你设置了环境变量。

作者链接:​​​​-m30 -t abc.txtansicon -m-f0 -t abc.txttype abc.txt cba.txt|ansicon -p -mf0 -tansicon -p -e [42;37mHello![0mansicon -p@echo.@echo [31mRed[0m@echo [32mGreen[0m@echo [33mYellow[0m@echo [36mBlue[0m@echo.@pause

代码5:这段代码短小精悍,推荐!

要用到powershell,WIN7及其以上版本都已经自带。

若要powershell显示双引号,需要用转义符。完整的颜色列表和更多的信息见​​这里。​​

@echo off:::ccr 我是'\"'红色'\"'字符!call :ccg 我是'\"'绿色'\"'字符!::也可以是这样的简写语法:::powershell write-host -fore Cyan This is Cyan text::powershell write-host -back Red This is Red background:ccrpowershell -Command Write-Host "%*" -foreground "Red"goto :eof:ccgpowershell -Command Write-Host "%*" -foreground "Green"echo.pause::Color 红色Red 黑色Black 绿色Green 黄色Yellow 蓝色Blue 洋红Magenta 青色Cyan 白色White

​​跳转至第二篇​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python--集合(python集合可以重复吗)
下一篇:ExecutionContext(执行上下文)综述
相关文章

 发表评论

暂时没有评论,来抢沙发吧~