windows、linux下指定文字变色问题。

哎!!!万恶的甲方,悲催的程序员。

  今天又要修改web服务升级程序,并且要将升级程序还原到数据库升级和业务升级互不影响的地步。改程序很快,但是遇到个认真细心的测试就悲剧了。

她提出了当数据库升级失败后,需要将数据库升级失败的提示写的显眼点好让他们发现。哎!那就开是翻某度找找有没合适的,答案是肯定有的,

找到的一个使用第三方jar包jansi的确实是可以达到输出字体颜色的目的,但是需要引入第三包无形中就增加了升级包大小。继续找的过程中找到了bat实现字体隔行黄色的文章。

拿文章里面的示例到本地可以跑但是里面注释基本没有。所以强迫症犯了就开始理解里面的具体内容了。

1:windows下(win10测试)

  windows输出带有颜色的字体,说白了就是使用findstr 命令中/a 属性完成的。入正题在dos下输入color -help 弹出下面的帮助

       

找到自己需要的字体颜色就可以写代码了,自己写的代码如下(退格符很重要不然会输出:号 看着就不爽)

@echo off
rem for循环中生成退格符并赋值给DEL变量
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
  set "DEL=%%a" 
)
rem 调用底下声明的ColorChange方法 0C 红色字体 红色字体为参数
call :ColorChange 0C 红色字体

rem echo. 相当于换行
echo.
call :ColorChange 0E 黄色字体
echo.
echo this is test color change demo
pause


:ColorChange

rem 生成以第二个参数为名称的文件 并将将退格符写到文件中 
echo %DEL% > %2

rem 使用findstr语法 查找第二个参数的文件,由于文件中只有退格符所以就输出了第二个文件文件名。
rem (ps 如果文件中有内容则输出第二个参数的名称加:号数据文件内容,如果文件是空的则输出文件名:。所以才需要上面的退格符将:号去除)
findstr /a:%1 .* %2 nul

rem 字体颜色出来了就删除这临时文件了
del %2 >nul

下面是测试效果:

linux系统就比较简单了,使用echo -e 命令就可以了,某度上教程一大堆就只写个简单的示例。封装个红色字体的方法 往里面传数据就可以了(ps:有个比较坑的地方就是使用SecureCRT工具,

由于是版本比较老5.1.3,然后出不来字体颜色,则就请使用闪烁来进行提示吧)

#!/bin/bash

function bred(){ 
    echo -e "33[31m $1 33[0m"
}

bred "红色"
原文地址:https://www.cnblogs.com/zhangjiangbin/p/13700901.html