windows、linux下指定文字變色問題。
阿新 • • 發佈:2020-09-20
哎!!!萬惡的甲方,悲催的程式設計師。
今天又要修改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 "\033[31m $1 \033[0m" } bred "紅色"