现在的位置: 首页 > 综合 > 正文

批处理CMD显示彩色文字

2017年08月28日 ⁄ 综合 ⁄ 共 10697字 ⁄ 字号 评论关闭

批处理&&彩色文字

ANSI.SYS是MS-DOS中一个很有用的设备驱动程序,利用它,我们可以取得意想不到的显示效果。
注意:语法和 ANSI 转义序列中的大写字母必须按原样键入。

ANSI.SYS 定义了一系列函数,这些函数被用来改变显示图形、控制光标移动和键的重定义,ANSI.SYS 设备驱动程序支持转义序列的 ANSI,终端仿真,以便控制系统的屏幕和键盘。

该设备驱动程序必须由位于 CONFIG.SYS 文件中的DEVICE或DEVICEHIGH命令加载。

语法

DEVICE(HIGH)=[ 驱动器 :][ 路径 ]ANSI.SYS [/X] [/K]

参数

[ 驱动器 :][ 路径 ]
指定 ANSI.SYS 文件的位置。

选项

/X
重新映射 101 键键盘以外的扩展键。

/K
使 ANSI.SYS 文件将 101 键键盘当作 84 键键盘看待,这等价于命令 SWITCHES=/K。如果您通常使用
SWITCHES=/K命令,那么在使用ANSI.SYS 时,则需要使用选项 /K。

ANSI 转义序列中关于光标移动、图形和键盘的设置:

在下面的 ANSI 转义序列的列表中,缩写 ESC 代表 ASCII转义字符 27(1Bh),它位于每个转义序列的开始。

ESC[PL;PcH
光标位置:移动光标到指定的位置(坐标),如果不指定位置,光标将移动到起始位置,即屏幕的左上角(0 行,0 列)。
该转义序列与下面的光标位置转义序列的工作方式相同。

ESC[PL;Pcf
光标位置:与前面光标位置转义序列的工作方式相同。

ESC[PnA
上移光标:不改变列而将光标向上移动指定的行数。如果光标已在首行,则 ANSI.SYS 忽略这个序列。

ESC[PnB
下移光标:不改变列而将光标向下移动指定的行数。如果光标已经在最后一行,则 ANSI.SYS 忽略这个序列。

ESC[PnC
右移光标:不改变行而将光标向右移动指定的列数。如果光标已经在最右列,则 ANSI.SYS 忽略这个序列。

ESC[PnD
左移光标:不改变行而将光标向左移动指定的列数。如果光标已经在最左列,则 ANSI.SYS 忽略这个序列。

ESC[s
保存光标位置:保存当前光标位置。使用“恢复光标位置”序列,您可以将光标移动到保存的光标位置。

ESC[u
恢复光标位置:将光标位置返回到“保存光标位置”所储存的位置。

ESC[2J
清除显示:清除屏幕并将光标位置移到起始位置(0 行,0 列)。像cls

ESC[K
清除行:清除从光标所在位置到行尾的所有字符( 包括光标位置上的字符)。

ESC[Ps;...;Psm
设置图形模式:调用由下列数值指定的图形函数,在该序列再次出现之前,这些被指定的函数保持激活状态。图形模式改变屏幕上显示的颜色和文本(例如:黑体和下划线字体)属性。

文本属性

值功能
------------------------------------
0 无属性
1 黑体
4 下划线字体(仅适用于单色显示适配器)
5 闪烁字体
7 反显字体
8 隐藏字体

前景色
值功能
------------------------------------
30 黑色
31 红色
32 绿色
33 黄色
34 蓝色
35 紫红色
36 青色
37 白色

背景色

值功能
------------------------------------
40 黑色
41 红色
42 绿色
43 黄色
44 蓝色
45 紫红色
46 青色
47 白色

参数 30 到 47 符合 ISO 6429 标准。

ESC[=psh
设置模式:改变屏幕宽度或类型,使之成为下列数值所指定的一种。

0 40 x 148 x 25 单色(文本)
1 40 x 148 x 25 彩色(文本)
2 80 x 148 x 25 单色(文本)
3 80 x 148 x 25 彩色(文本)
4 320 x 148 x 200 4 色(图形)
5 320 x 148 x 200 单色(图形)
6 640 x 148 x 200 单色(图形)
7 启用换行功能
13 320 x 148 x 200 彩色(图形)
14 640 x 148 x 200 彩色(16 色图形)
15 640 x 148 x 350 单色(2 色图形)
16 640 x 148 x 350 彩色(16 色图形)
17 640 x 148 x 480 单色(2 色图形)
18 640 x 148 x 480 彩色(16 色图形)
19 320 x 148 x 200 彩色(256 色图形)

ESC[=Psl
重新设置模式:使用“设置模式”序列所用的同一值来重新设置模式,但是 7 除外,使用 7 将使换行功能失效。

注意:该转义序列中的最后一个字符是个小写 L。

这些都要在EDIT中完成,即开始--运行edit,当然在edit里构建所需的ESC字符后再转到记事本编辑比较方便
在用EDIT编辑批处理文件时可用下列方法输入ESC字符:首先同时按下Ctrl和P键,然后按ESC此时屏幕出现一左箭头(说明:已输入了ESC字符,之后再按方括号键开始ANSI命令)

一定还有更好的方法edit太麻烦,大家都说说看法

如:

@echo off
chcp 437>nul&&graftabl 936>nul
if not exist CONFIG.NT copy %WinDir%\System32\CONFIG.NT CONFIG.NT
attrib +h CONFIG.NT
::调用ANSI.sys
@cls
echo DEVICE=%WinDir%\System32\ANSI.SYS /x >%WinDir%\System32\CONFIG.NT
@echo.
command /cecho
::指定背景色,缺省状态为黑色,如:command /cecho [1;45m 则背景为紫红色
@echo.
@echo.
command /cecho [1;31m                                                                         白雪歌送武判官归京

@echo.
command /cecho [1;37m                                                                                                                       --岑参

@echo.
command /cecho [1;32m                                                                北风卷地白草折,胡天八月即飞雪。

@echo.
command /cecho [1;33m                                                                忽如一夜春风来,千树万树梨花开。

@echo.
command /cecho [1;35m                                                                散入珠帘湿罗幕,狐裘不暖锦衾薄。

@echo.
command /cecho [1;36m                                                                将军角弓不得控,都护铁衣冷犹著。

@echo.
command /cecho [1;37m                                                                瀚海阑干百丈冰,愁云惨淡万里凝。

@echo.
command /cecho [1;31m                                                                中军置酒饮归客,胡琴琵琶与羌笛。

@echo.
command /cecho [1;37m                                                                纷纷暮雪下辕门,风掣红旗冻不翻。

@echo.
command /cecho [1;36m                                                                轮台东门送君去,去时雪满天山路。

@echo.
command /cecho [1;32m                                                                山回路转不见君,雪上空留马行处。

@echo.
command /cecho [1;33m 结束
pause>nul
copy         CONFIG.NT         %WinDir%\System32\CONFIG.NT
del         CONFIG.NT
exit

在博客中无法显示源代码的特殊字符,源代码点击这里下载

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

我们有时会希望DOS能够显示出不同的显颜色或者其它功能,我们在DOS启动时载入ANSI.SYS,它可以帮我们实现这些功能,下面是它的使用方法:
------------------------------

ANSI.SYS程序的使用
ANSI.SYS是MS-DOS中一个很有用的设备驱动程序,利用它,我们可以取得意想不到的显示效果。那么,它该如何使用呢?下面就来介绍一下。
注意:在本节中,语法和 ANSI 转义序列中的大写字母必须按原样键入。

ANSI.SYS 定义了一系列函数,这些函数被用来改变显示图形、控制光标移动和键的重定义,ANSI.SYS 设备驱动程序支持转义序列的 ANSI
终端仿真,以便控制系统的屏幕和键盘。

该设备驱动程序必须由位于 CONFIG.SYS 文件中的DEVICE或DEVICEHIGH命令加载。

语法

DEVICE(HIGH)=[ 驱动器 :][ 路径 ]ANSI.SYS [/X] [/K] [/R]

参数

[ 驱动器 :][ 路径 ]
指定 ANSI.SYS 文件的位置。

选项

/X
重新映射 101 键键盘以外的扩展键。

/K
使 ANSI.SYS 文件将 101 键键盘当作 84 键键盘看待,这等价于命令 SWITCHES=/K。如果您通常使用
SWITCHES=/K命令,那么在使用ANSI.SYS 时,则需要使用选项 /K。

/R
当 ANSI.SYS 与屏幕阅读程序(该程序使残疾人更易于使用计算机)一起使用时,此选项用来调整行的滚动,以便提高可读性。

在 ANSI 转义序列中使用的参数:

Pn
数字参数,用来指定一个十进制数。

Ps
可选参数。指定一个十进制数,用于选择函数。您可以指定多个函数,必须用分号 ( 将参数隔开。

PL
行参数。指定一个十进制数,它代表显示器或其它设备上的一行。

Pc
列参数。指定一个十进制数,它代表屏幕或其它设备上的一列。

ANSI 转义序列中关于光标移动、图形和键盘的设置:

在下面的 ANSI 转义序列的列表中,缩写 ESC 代表 ASCII转义字符 27(1Bh),它位于每个转义序列的开始。

ESC[PL;PcH
光标位置:移动光标到指定的位置(坐标),如果不指定位置,光标将移动到起始位置,即屏幕的左上角(0 行,0 列)。
该转义序列与下面的光标位置转义序列的工作方式相同。

ESC[PL;Pcf
光标位置:与前面光标位置转义序列的工作方式相同。

ESC[PnA
上移光标:不改变列而将光标向上移动指定的行数。如果光标已在首行,则 ANSI.SYS 忽略这个序列。

ESC[PnB
下移光标:不改变列而将光标向下移动指定的行数。如果光标已经在最后一行,则 ANSI.SYS 忽略这个序列。

ESC[PnC
右移光标:不改变行而将光标向右移动指定的列数。如果光标已经在最右列,则 ANSI.SYS 忽略这个序列。

ESC[PnD
左移光标:不改变行而将光标向左移动指定的列数。如果光标已经在最左列,则 ANSI.SYS 忽略这个序列。

ESC[s
保存光标位置:保存当前光标位置。使用“恢复光标位置”序列,您可以将光标移动到保存的光标位置。

ESC[u
恢复光标位置:将光标位置返回到“保存光标位置”所储存的位置。

ESC[2J
清除显示:清除屏幕并将光标位置移到起始位置(0 行,0 列)。

ESC[K
清除行:清除从光标所在位置到行尾的所有字符( 包括光标位置上的字符)。

ESC[Ps;...;Psm
设置图形模式:调用由下列数值指定的图形函数,在该序列再次出现之前,这些被指定的函数保持激活状态。图形模式改变屏幕上显示的颜色和文本(例如:黑体和下划线字体)属性。

文本属性

值功能
------------------------------------
0 无属性
1 黑体
4 下划线字体(仅适用于单色显示适配器)
5 闪烁字体
7 反显字体
8 隐藏字体

前景色
值功能
------------------------------------
30 黑色
31 红色
32 绿色
33 黄色
34 蓝色
35 紫红色
36 青色
37 白色

背景色

值功能
------------------------------------
40 黑色
41 红色
42 绿色
43 黄色
44 蓝色
45 紫红色
46 青色
47 白色

参数 30 到 47 符合 ISO 6429 标准。

ESC[=psh
设置模式:改变屏幕宽度或类型,使之成为下列数值所指定的一种。

0 40 x 148 x 25 单色(文本)
1 40 x 148 x 25 彩色(文本)
2 80 x 148 x 25 单色(文本)
3 80 x 148 x 25 彩色(文本)
4 320 x 148 x 200 4 色(图形)
5 320 x 148 x 200 单色(图形)
6 640 x 148 x 200 单色(图形)
7 启用换行功能
13 320 x 148 x 200 彩色(图形)
14 640 x 148 x 200 彩色(16 色图形)
15 640 x 148 x 350 单色(2 色图形)
16 640 x 148 x 350 彩色(16 色图形)
17 640 x 148 x 480 单色(2 色图形)
18 640 x 148 x 480 彩色(16 色图形)
19 320 x 148 x 200 彩色(256 色图形)

ESC[=Psl
重新设置模式:使用“设置模式”序列所用的同一值来重新设置模式,但是 7 除外,使用 7 将使换行功能失效。

注意:该转义序列中的最后一个字符是个小写 L。

ESC[code;string;...p
设置键盘字符串:将键盘键重新定义为指定的字符串。该转义序列的参数定义如下:

“code”是列于下表的一个或多个数值,这些数值代表键盘键和键的组合。当在命令中使用这些数值时,除了该序列要求的分号外,您还必须键入该表中显示的分号。括号中的代码在一些键盘上不存在,除非选项

/X 在 ANSI.SYS 的DEVICE 命令中被指定,否则,ANSI.SYS 将不为这些键盘翻译括号中的代码。

“string”对于单个字符是 ASCII 代码,或者是包含在引号中的串。例如:65 和“A”都被用来代表大写字母 A。

要点:下表中的一些值并不是对于所有的计算机都有效,对于那些不同的数值,请检查您的计算机文档。

键代码 SHIFT+ 代码 CTRL+ 代码 ALT+ 代码
------------------------------------------------------------------
F1         0;59 0;84                    0;94          0;104
F2         0;60 0;85                    0;95          0;105
F3         0;61 0;86                    0;96          0;106
F4         0;62 0;87                    0;97          0;107
F5         0;63 0;88                    0;98          0;108
F6         0;64 0;89                    0;99          0;109
F7         0;65 0;90                    0;100          0;110
F8         0;66 0;91                    0;101          0;111
F9         0;67 0;92                    0;102          0;112
F10 0;68 0;93                    0;103          0;113
F11 0;133         0;135          0;137          0;139
F12 0;134         0;136          0;138          0;140
A 97           65                   1                   0;30
B 98           66                   2                   0;48
C 99           66                   3                   0;46
D 100 68                   4                   0;32
E 101 69                   5                   0;18
F 102 70                   6                   0;33
G 103 71                   7                   0;34
H 104 72                   8                   0;35
I 105 73                   9                   0;23
J 106 74                   10                   0;36
K 107 75                   11                   0;37
L 108 76                   12                   0;38
M 109 77                   13                   0;50
N 110 78                   14                   0;49
O 111 79                   15                   0;24
P 112 80                   16                   0;25
Q 113 81                   17                   0;16
R 114 82                   18                   0;19
S 115 83                   19                   0;31
T 116 84                   20                   0;20
U 117 85                   21                   0;22
V 118 86                   22                   0;47
W 119 87                   23                   0;17
X 120 88                   24                   0;45
Y 121 89                   25                   0;21
Z 122 90                   26                   0;44
1 49           33                   --                   0;120
2 50           64                   0                   0;121
3 51           35                   --                   0;122
4 52           36                   --                   0;123
5 53           37                   --                   0;124
6 54           94                   30                   0;125
7 55           38                   --                   0;126
8 56           42                   --                   0;126
9 57           40                   --                   0;127
0 48           41                   --                   0;129
- 45           95                   31                   0;130
= 61           43                   --                   0;131
[ 91           123                   27                   0;26
] 93           125                   29                   0;27
92           124                   28                   0;43
; 59           58                   --                   0;39
' 39           34                   --                   0;40
, 44           60                   --                   0;51
. 46           62                   --                   0;52
/ 47           63                   --                   0;53
` 96           126                   --                   0;41
通常,在DOS提示符下按ESC键时,屏幕会显示一个反斜杠(\)并把光标移到下一行.这时可以使用PROMPT命令.假如现在DOS提示符是$P$G,想要清屏,就可键入:

PROMPT=$E[2J $P$G 这里$E即表示按ESC键,然后再把提示符改回$P$G,不然在执行每条命令前就都要清屏了.
在用EDIT编辑批处理文件时可用下列方法输入ESC字符.首先同时按下Ctrl和P键
然后再按下作方括号,此时屏幕出现一左箭头(?说明已输入了ESC字符.之后必须放 开Ctrl再次按下方括号键开始ANSI命令.

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》

@echo off
::CMD里显示彩色文字
chcp 437>nul&&graftabl 936>nul
if not exist CONFIG.NT copy %WinDir%\System32\CONFIG.NT CONFIG.NT
@cls
echo DEVICE=%WinDir%\System32\ANSI.SYS /x >%WinDir%\System32\CONFIG.NT
@echo.
command /cecho 
command /cecho  [1;36m                                      登鹳雀楼
@echo.
@echo.
command /cecho  [1;35m                                白日依山尽, [33m黄河入海流。
@echo.
command /cecho  [1;32m                                欲穷千里目, [31m更上一层楼。
@echo.
@echo.
@echo.
@echo.
command /cecho  [1;33m                                        下江陵
@echo.
@echo.
command /cecho  [1;32m                            朝辞白帝彩云间, [36m千里江陵一日还。
@echo.
command /cecho  [1;31m                            两岸猿声啼不住, [35m轻舟已过万重山。
@echo.
@echo.
command /cecho  [1;32m 继续下页
pause>nul
@cls
@echo.
@echo.
@echo.
command /cecho  [1;31m                                      关山月
@echo.
@echo.
command /cecho  [1;32m                              明月出天山,苍茫云海间。
@echo.
command /cecho  [1;33m                              长风几万里,吹度玉门关。
@echo.
command /cecho  [1;35m                              汉下白登道,胡窥青海湾。
@echo.
command /cecho  [1;36m                              由来征战地,不见有人还。
@echo.
command /cecho  [1;37m                              戍客望边色,思归多苦颜。
@echo.
command /cecho [1;31m                              高楼当此夜,叹息未应闲。
@echo.
@echo.
pause>nul
copy  CONFIG.NT  %WinDir%\System32\CONFIG.NT
copy  CONFIG.NT  %WinDir%\System32\CONFIG.NT
del  CONFIG.NT
exit

在博客中无法显示源代码的特殊字符,源代码点击这里下载


:: color 颜色代码说明:
:: 0 -- 默认颜色(黑屏白字)
:: 1 -- 高亮度字体颜色
:: 5 -- 字符闪烁
:: 8 -- 取消字符属性

:: 30 -- 黑色前景          40 -- 黑色背景
:: 31 -- 红色前景          41 -- 红色背景
:: 32 -- 绿色前景          42 -- 绿色背景
:: 33 -- 黄色前景          43 -- 黄色背景
:: 34 -- 蓝色前景          44 -- 蓝色背景
:: 35 -- 紫色前景          45 -- 紫色背景
:: 36 -- 青色前景          46 -- 青色背景
:: 37 -- 白色前景          47 -- 白色背景

【上篇】
【下篇】

抱歉!评论已关闭.