
ANSI的esc轉(zhuǎn)義序列功能強(qiáng)大有網(wǎng)友有興趣研究研究嗎最后由 hnfeng 于 -7-15 22:58從Win10開(kāi)始,你可以用ANSI的esc轉(zhuǎn)義序列在CMD、批處理等里面使用更多的功能,例如:可以指定光標(biāo)移動(dòng),以便在特定行列位置顯示字符,這可以用于以前無(wú)法實(shí)現(xiàn)的功能,例如批處理運(yùn)行中的顯示信息、進(jìn)度條等等;可以指定信息滾動(dòng)的區(qū)域,得到特殊的輸出效果,例如CMD中1-5行顯示一些固定信息,6-15行滾動(dòng)顯示批處理運(yùn)行中的信息;可以針對(duì)已經(jīng)顯示的信息進(jìn)行插入行、刪除行、插入字、刪除字等操作,這在以前是不可想象的;可以使用更多的字符和背景顏色,也可以參見(jiàn)我的另一個(gè)帖子:http://bbs.bathome.net/thread-69258-1-1.html還有其他功能等著你發(fā)現(xiàn)如果你想試驗(yàn),我提醒一下:ESC轉(zhuǎn)義,是以ESC開(kāi)始的一些控制符,ESC在CMD里面,是 Ctrl+[ 輸入在一些軟件中例如Notpad2,3,4 里面,ESC可以 Alt+27 輸入在某些軟件中例如UltraEdit里面,需要在菜單 -插入項(xiàng)目-文字字符,按ESC鍵輸入在批處理里面,也可以使用下面兩種純文字方法設(shè)置一個(gè)變量來(lái)使用
或nclick="copycode($('code0'));">復(fù)制代碼
- for /f delims=# %%i in ('prompt #$E#^&echo on^&for %%a in ^(1^) do rem') do set EscK=%%i
還有:使用 echo 的方法,默認(rèn)是會(huì)換行的,使用 set /p的方法,默認(rèn)不換行,當(dāng)然,使用 echo 的方法時(shí),可以加入 nA 就能讓光標(biāo)返回,相當(dāng)于不換行你在 CMD 窗口中試試:(里面的 ^[ 實(shí)際是 Ctrl+[ )nclick="copycode($('code1'));">復(fù)制代碼
- for /F %%a in ('echo prompt $E ^| cmd') do set EscK=%%a
批處理:nclick="copycode($('code2'));">復(fù)制代碼
- for /L %a in (1,1,10) do (@echo ^[[3A^[[36m%a_%a_%a^[[m&ping -n 2 127.1>nul)
===============================下面列出部分轉(zhuǎn)義功能%EscK%[nA光標(biāo)向上移動(dòng)n行%EscK%[nB光標(biāo)向下移動(dòng)n行%EscK%[nC光標(biāo)向右移動(dòng)n個(gè)位%EscK%[nD光標(biāo)向左移動(dòng)n個(gè)位%EscK%[nE光標(biāo)移到下面第n行的開(kāi)頭%EscK%[nF光標(biāo)移到上面第n行的開(kāi)頭%EscK%[nG光標(biāo)移到第n列%EscK%[nd光標(biāo)移到第n行 ?%EscK%[n;mH光標(biāo)移到第n行第m列(1為左上角)。如果省略默認(rèn)為1,即 %EscK%[;2H = %EscK%[1;2H,即 %EscK%[3;1H = %EscK%[3;H = %EscK%[3H%EscK%[n;mf與 %EscK%[n;mH 相同%EscK%[nJ清除屏幕的部分區(qū)域。 如果n是0(或缺失),則清除從光標(biāo)位置到屏幕末尾的部分。 如果n是1,則清除從光標(biāo)位置到屏幕開(kāi)頭的部分。 如果n是2,則清除整個(gè)屏幕。 如果n是3,則清除整個(gè)屏幕,并刪除回滾緩存區(qū)中的所有行。%EscK%[nK清除行內(nèi)的部分區(qū)域。 如果n是0(或缺失),清除從光標(biāo)位置到該行末尾的部分。 如果n是1,清除從光標(biāo)位置到該行開(kāi)頭的部分。 如果n是2,清除整行。光標(biāo)位置不變。 %EscK%[6n以ESC[n;mR(就像在鍵盤(pán)上輸入)向應(yīng)用程序報(bào)告光標(biāo)位置(CPR),其中n是行,m是列。%EscK%[s 保存光標(biāo)的當(dāng)前位置。%EscK%[u 恢復(fù)保存的光標(biāo)位置。%EscK%[nS整頁(yè)向上滾動(dòng)n(默認(rèn)1)行。新行添加到底部。%EscK%[nT整頁(yè)向下滾動(dòng)n(默認(rèn)1)行。新行添加到頂部。%EscK%[n;mr設(shè)置滾動(dòng)區(qū)域%EscK%[nS向上滾動(dòng)滾動(dòng)區(qū)域%EscK%[nT向下滾動(dòng)滾動(dòng)區(qū)域%EscK%[nX擦除字符%EscK%[nL插入行%EscK%[nM刪除行%EscK%[n@插入字符%EscK%[nP刪除字符%EscK%[8;n;mt調(diào)整CMD窗口為n行m列%EscK%[nm設(shè)置SGR參數(shù),包括文字顏色(8/16色,256色,24位色). 如果沒(méi)有參數(shù),則視為 %EscK%[0m(重置/默認(rèn)/常規(guī))<ForegroundColor> 前景色,[BackgroundColor] 背景色1. 3/4位色(8/16色):前景色 30-黑,31-紅,32-綠,33-黃,34-藍(lán),35-品紅,36-青,37-白16色就是加上高亮的8色開(kāi)始高亮前景[1;關(guān)閉高亮前景[22; 90-灰,91-亮紅,92-亮綠,93-亮黃,94-亮藍(lán),95-亮品紅,96-亮青,97-亮白背景色 40-黑,41-紅,42-綠,43-黃,44-藍(lán),45-品紅,46-青,47-白高亮背景色 100-灰,101-亮紅,102-亮綠,103-亮黃,104-亮藍(lán),105-亮品紅,106-亮青,107-亮白2. 8位色(256色):256色前景色及引導(dǎo) [38;5;n256色背景色及引導(dǎo) [48;5;nn為顏色值:0-黑,1-紅,2-綠,3-黃,4-藍(lán),5-品紅,6-青,7-白8-灰, 9-亮紅,10-亮綠,11-亮黃,12-亮藍(lán),13-亮品紅,14-亮青,15-亮白16 至 231 :多種顏色232 至 255:灰度,從較黑到較白(0最黑,15最白)3. 24位色(RGB):24位色前景色及引導(dǎo) [38;2;R;G;B24位色背景色及引導(dǎo) [48;2;R;G;B0 <= R,G,B <=25530-37:3/4位色前景色; 38;5;n:設(shè)置前景色(8位);38;2;r;g;b:設(shè)置前景色(24位)40-47:3/4位色背景色; 48;5;n:設(shè)置背景色(8位);48;2;r;g;b:設(shè)置背景色(24位) 恢復(fù)默認(rèn):[0m/[m ;高亮開(kāi)關(guān):[1m/22m ;下劃線(xiàn)開(kāi)關(guān):[4m/[24m ;反顯開(kāi)關(guān):[7m/[27m 未試驗(yàn)出來(lái):閃爍開(kāi)關(guān):[5m/[25m ;隱藏(前景背景色一樣)開(kāi)關(guān):[8m/[28m ; 劃掉開(kāi)關(guān):[9m/[29m;上劃線(xiàn)開(kāi)關(guān):[53m/[55mnclick="copycode($('code3'));">復(fù)制代碼
- @echo off
- for /F %%a in ('echo prompt $E ^| cmd') do set EscK=%%a
- echo;&echo;&echo;&echo;
- for /L %%a in (1,1,10) do (
- echo %EscK%[1A%EscK%[36m%%a_%%a_%%a%EscK%[0m
- ping -n 2 127.1>nul)
- )
- pause

