zoukankan      html  css  js  c++  java
  • 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 "红色"
  • 相关阅读:
    迭代器和生成器
    函数嵌套
    页面调用dll
    C++MFC之picture control控件铺满图片
    C++中去掉string字符串中的 等
    C++之map使用
    C++之条形码,windows下zint库的编译及应用(二)
    C++之条形码,windows下zint库的编译及应用(一)
    C++通过HTTP请求Get或Post方式请求Json数据(转)
    从长字符串中获取想要的字符串
  • 原文地址:https://www.cnblogs.com/zhangjiangbin/p/13700901.html
Copyright © 2011-2022 走看看