目录

自定义CMD提示符并着色

系列 - Customize Prompt of Shell

和 Bash 以及 PowerShell 类似, 要控制显示格式, 须使用 SGR 转义序列: ESC[<n>m。简单理解, 以 ESC[ 开头; 中间 <n> 处设置颜色, 使用多个代码时中间用分号;隔开, 比如1;31; 以 m 结尾。

显示控制代码有3类:

  • 效果控制代码
  • 前景色控制代码 (即字体颜色)
  • 背景色控制代码
代码效果
0重置所有显示属性为默认设置
1字体加粗
2字体正常粗细
4字体加下划线
5字体闪烁
7前景色与背景色调转
8隐藏
前景色代码背景色代码颜色
3040黑色
3141红色
3242绿色
3343黄色
3444蓝色
3545品红
3646青色
3747白色

参考 这里 设置永久配置 cmdrc.cmd, 将下面的代码写入, 使其在打开 cmd 时可以被预加载。

batch

@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[0m

在 cmd 中运行命令 help prompt 得知, 提示符可以由普通字符及下列特殊代码组成:

字符描述
$A& (与号)
$B| (竖线)
$C( (左括号)
$D当前日期
$E转义码(ASCII 码 27)
$F) (右括号)
$G> (大于号)
$HBackspace (删除前一个字符)
$L< (小于号)
$N当前驱动器
$P当前驱动器及路径
$Q= (等号)
$S(空格)
$T当前时间
$VWindows 版本号
$_回车换行符
$$$ (美元符号)

如果命令扩展被启用, PROMPT 命令会支持下列格式化字符:

字符描述
$+根据 PUSHD 目录堆栈的深度, 零个或零个以上加号(+)字符, 一个推的层一个字符。
$M如果当前驱动器不是网络驱动器, 显示跟当前驱动器号或空字符串有关联的远程名。

20:34:50.71 senzyo@Windows D:\Desktop
$
  • $T 会将毫秒一起输出, 暂时没有找到控制其输出格式的命令
  • 遗憾的是不能像 Bash 和 PowerShell 那样根据当前用户身份分别显示用户名和 @, #

顺便一提
PowerShell 后跟启动参数 -nologo, CMD 后跟启动参数 /k, 可以取消显示顶端的版本和版权信息。