自定义CMD提示符并着色
系列 - Customize Prompt of Shell
目录
1 ANSI转义字符
和 Bash 以及 PowerShell 类似, 要控制显示格式, 须使用 SGR 转义序列: ESC[<n>m。简单理解, 以 ESC[ 开头; 中间 <n> 处设置颜色, 使用多个代码时中间用分号;隔开, 比如1;31; 以 m 结尾。
2 显示控制代码
显示控制代码有3类:
- 效果控制代码
- 前景色控制代码 (即字体颜色)
- 背景色控制代码
2.1 效果控制代码
| 代码 | 效果 |
|---|---|
| 0 | 重置所有显示属性为默认设置 |
| 1 | 字体加粗 |
| 2 | 字体正常粗细 |
| 4 | 字体加下划线 |
| 5 | 字体闪烁 |
| 7 | 前景色与背景色调转 |
| 8 | 隐藏 |
2.2 前景色与背景色控制代码
| 前景色代码 | 背景色代码 | 颜色 |
|---|---|---|
| 30 | 40 | 黑色 |
| 31 | 41 | 红色 |
| 32 | 42 | 绿色 |
| 33 | 43 | 黄色 |
| 34 | 44 | 蓝色 |
| 35 | 45 | 品红 |
| 36 | 46 | 青色 |
| 37 | 47 | 白色 |
3 Prompt代码
参考 这里 设置永久配置 cmdrc.cmd, 将下面的代码写入, 使其在打开 cmd 时可以被预加载。
@echo off
:: Prompt
prompt $_$e[1;37m$T $e[1;31m用户名$e[1;37m@$e[1;31m电脑名 $e[1;36m$P $_$e[1;31m$$ $e[0m3.1 解释
在 cmd 中运行命令 help prompt 得知, 提示符可以由普通字符及下列特殊代码组成:
| 字符 | 描述 |
|---|---|
| $A | & (与号) |
| $B | | (竖线) |
| $C | ( (左括号) |
| $D | 当前日期 |
| $E | 转义码(ASCII 码 27) |
| $F | ) (右括号) |
| $G | > (大于号) |
| $H | Backspace (删除前一个字符) |
| $L | < (小于号) |
| $N | 当前驱动器 |
| $P | 当前驱动器及路径 |
| $Q | = (等号) |
| $S | (空格) |
| $T | 当前时间 |
| $V | Windows 版本号 |
| $_ | 回车换行符 |
| $$ | $ (美元符号) |
如果命令扩展被启用, PROMPT 命令会支持下列格式化字符:
| 字符 | 描述 |
|---|---|
| $+ | 根据 PUSHD 目录堆栈的深度, 零个或零个以上加号(+)字符, 一个推的层一个字符。 |
| $M | 如果当前驱动器不是网络驱动器, 显示跟当前驱动器号或空字符串有关联的远程名。 |
3.2 效果
20:34:50.71 senzyo@Windows D:\Desktop$
$T会将毫秒一起输出, 暂时没有找到控制其输出格式的命令- 遗憾的是不能像 Bash 和 PowerShell 那样根据当前用户身份分别显示用户名和
@,#
顺便一提
PowerShell 后跟启动参数
-nologo, CMD 后跟启动参数 /k, 可以取消显示顶端的版本和版权信息。