当前位置: 首页 > news >正文

Windows控制台颜色修改

Windows控制台颜色修改

  • 一、使用 color 命令:临时快速修改
    • 1. 命令语法与颜色编码
    • 2. 实用示例与注意事项
  • 二、永久生效:设置默认颜色
  • 三、编程实现:动态控制颜色
    • 1. C++ 实现
      • 方法 1:调用 system 执行 color 命令(全局修改)
      • 方法 2:使用 Windows API 精细控制(局部修改)
    • 2. Python 实现
      • 方法 1:使用 ctypes 调用 Windows API
      • 方法 2:使用 colorama 库(推荐,跨平台)
    • 3. C# 实现
  • 四、常见问题与注意事项
  • 参考资料


在日常开发或使用 Windows 控制台(CMD/PowerShell)时,默认的黑底白字可能显得单调。通过自定义控制台的前景色(文字颜色)和背景色,不仅能提升视觉体验,还能让关键输出更突出。本文将从临时设置、永久生效、多语言编程实现等维度,详细介绍控制台颜色修改的方法,兼顾基础操作与进阶需求。

一、使用 color 命令:临时快速修改

Windows 控制台内置的 color 命令可快速调整当前会话的颜色,无需额外工具,适用于临时调试或快速美化。

1. 命令语法与颜色编码

基本语法:

color [attr]

其中 attr 是由两个十六进制数字组成的颜色属性,格式为 [背景色] [前景色],每个数字取值范围为 0-F,对应颜色如下:

数字颜色数字颜色
0黑色8灰色
1蓝色9淡蓝色
2绿色A淡绿色
3青色B淡青色
4红色C淡红色
5紫色D淡紫色
6黄色E淡黄色
7白色F亮白色

2. 实用示例与注意事项

  • 基础用法:指定两个十六进制数字,中间无空格。如设置白底黑字(背景 7 + 前景 0):color 70

在这里插入图片描述

  • 仅修改前景色:只指定一个数字时,背景色沿用当前默认值。例如设置前景色为淡绿色(A,小写也行):color A

  • 恢复默认:不带参数时,恢复控制台启动时的默认颜色:color

  • 错误情况:若背景色与前景色相同(如 color 77),则 ERRORLEVEL 设置为 1,颜色无变化。

二、永久生效:设置默认颜色

color 命令的修改仅对当前窗口有效,关闭后失效。若需永久生效,需通过控制台属性配置。

操作步骤(适用于 CMD 和 PowerShell):

  1. 打开控制台窗口(CMD 或 PowerShell)。
  2. 右键点击窗口标题栏,选择 「默认值」

在这里插入图片描述

  1. 在弹出的配置窗口中切换到 「颜色」 选项卡。

在这里插入图片描述

  1. 分别点击「屏幕背景」和「屏幕文字」对应的颜色块选择颜色,点击「确定」保存。

下次打开控制台时,将自动应用新的默认颜色。

“属性”和“默认值”选项之间的区别:

在命令提示符窗口标题上右键单击可访问“属性”对话框。(如果命令提示符以全屏模式运行,请按Alt + Enter键切换到窗口显示。)在这里所做的更改将影响当前会话,以及仅从该快捷方式启动的所有后续会话。所做的更改将保存在特定的快捷方式(.lnk)文件中,而不是注册表中。

在命令提示符窗口标题上右键单击并从控制菜单中选择“默认值”,可以让您进行不会影响当前会话,但会影响所有后续会话(除非是从已自定义属性的快捷方式启动的)的更改。这些更改还将影响未来会话中的字符模式、基于MS-DOS的应用程序,这些应用程序没有程序信息文件(PIF)且不存储自己的设置。此设置将保存在注册表中。

举例来说,若将CMD快捷方式的“属性”改为白底黑字(默认值保持不变),那么通过该修改后的CMD快捷方式打开的窗口会呈现白底黑字;而通过其他方式启动的控制台窗口——比如自己编写的HelloWorld.exe程序运行时调用的控制台窗口,仍会沿用“默认值”设置的黑底白字。

三、编程实现:动态控制颜色

在程序中可通过调用系统命令或 API 动态修改颜色,支持局部文字颜色调整(而非全局窗口颜色)。

1. C++ 实现

方法 1:调用 system 执行 color 命令(全局修改)

#include <iostream>
using namespace std;int main() {// 设置背景为蓝色(1),前景为亮白色(F)system("color 1F");cout << "蓝色背景 + 亮白色文字" << endl;// 恢复默认(黑底白字:07)system("color 07");cout << "已恢复默认颜色" << endl;return 0;
}

方法 2:使用 Windows API 精细控制(局部修改)

通过 SetConsoleTextAttribute 函数可仅修改后续输出的文字颜色,不影响全局窗口设置:

#include <iostream>
#include <windows.h>  // 需包含Windows头文件
using namespace std;int main() {// 获取标准输出句柄HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);// 颜色格式:背景色×16 + 前景色(颜色值同0-F编码)// 示例1:红色背景(4)+ 淡黄色文字(E)SetConsoleTextAttribute(hConsole, 4 * 16 + 0xE);cout << "红色背景 + 淡黄色文字" << endl;// 示例2:默认黑底(0)+ 淡绿色文字(A)SetConsoleTextAttribute(hConsole, 0 * 16 + 0xA);cout << "默认背景 + 淡绿色文字" << endl;// 恢复默认(黑底白字:0×16+7)SetConsoleTextAttribute(hConsole, 0x07);cout << "已恢复默认颜色" << endl;return 0;
}

2. Python 实现

Python 可通过 ctypes 调用 Windows API,或使用第三方库 colorama 简化操作(跨平台兼容)。

方法 1:使用 ctypes 调用 Windows API

import ctypes# 获取标准输出句柄
std_out = ctypes.windll.kernel32.GetStdHandle(-11)  # -11 表示标准输出def set_color(foreground, background):"""设置颜色:foreground(前景色)和 background(背景色)为0-F的整数"""# 颜色格式:background << 4 | foreground(等价于背景色×16 + 前景色)ctypes.windll.kernel32.SetConsoleTextAttribute(std_out, background << 4 | foreground)# 示例:淡红色文字(C)+ 黑色背景(0)
set_color(0xC, 0)
print("淡红色文字(黑色背景)")# 示例:白色文字(7)+ 蓝色背景(1)
set_color(7, 1)
print("白色文字(蓝色背景)")# 恢复默认(白色文字7 + 黑色背景0)
set_color(7, 0)
print("已恢复默认颜色")

方法 2:使用 colorama 库(推荐,跨平台)

先安装库:pip install colorama,使用示例:

from colorama import init, Fore, Back, Style# 初始化(Windows 需调用一次,自动处理颜色重置)
init(autoreset=True)# 前景色:Fore.颜色(如RED、GREEN);背景色:Back.颜色
print(Fore.RED + "红色文字(默认背景)")
print(Back.YELLOW + Fore.BLACK + "黄色背景 + 黑色文字")
print(Style.RESET_ALL + "恢复默认颜色")  # 手动重置(autoreset=True时可省略)

3. C# 实现

using System;class Program {static void Main() {// 获取当前控制台输出var console = Console.ForegroundColor;// 设置前景色为红色,背景色为黑色Console.ForegroundColor = ConsoleColor.Red;Console.BackgroundColor = ConsoleColor.Black;Console.WriteLine("红色文字(黑色背景)");// 设置前景色为白色,背景色为蓝色Console.ForegroundColor = ConsoleColor.White;Console.BackgroundColor = ConsoleColor.Blue;Console.WriteLine("白色文字(蓝色背景)");// 恢复默认Console.ResetColor();Console.WriteLine("已恢复默认颜色");}
}

四、常见问题与注意事项

  1. PowerShell 兼容性:color 命令在 PowerShell 中同样可用,但部分参数行为与 CMD 一致(如颜色编码)。

  2. 颜色冲突:避免设置前景色与背景色相同(如黑底黑字),可能导致文字无法看清。

  3. 注册表恢复:若永久设置异常,可通过注册表重置(谨慎操作):

    • 路径:HKEY_CURRENT_USER\Console
    • 删除对应控制台(如 cmd.exe)的 BackgroundColor 和 ForegroundColor 键值。
  4. 跨平台差异:本文方法仅适用于 Windows,Linux/macOS 控制台颜色修改需使用 ANSI 转义码。


    参考资料

  • cmd中设置默认的控制台前景和背景颜色。 - 知乎
  • C/C++改变控制台的字体颜色_c++控制台文字颜色-CSDN博客
  • Windows 的color 命令- suv789 - 博客园
  • Microsoft 官方文档:color 命令
  • Windows API:SetConsoleTextAttribute
  • colorama 官方文档
  • How to Set Command Prompt Default Window Size and Position » Winhelponline
  • colorama 官方文档
  • How to Set Command Prompt Default Window Size and Position » Winhelponline

通过上述方法,可根据场景灵活选择临时修改、永久配置或编程动态控制,让控制台输出更符合需求。


文章转载自:

http://dIFeDRyE.htktn.cn
http://mSntIUF7.htktn.cn
http://SRPlH2FR.htktn.cn
http://nRQgaTza.htktn.cn
http://OteBnxD9.htktn.cn
http://vUQddmXa.htktn.cn
http://jFPXSlWP.htktn.cn
http://Zvw65EGb.htktn.cn
http://cLupsVke.htktn.cn
http://OFcGdU62.htktn.cn
http://mlVXdqnR.htktn.cn
http://2InXK166.htktn.cn
http://hYrasTru.htktn.cn
http://3lIWmHQB.htktn.cn
http://mD0SVjEo.htktn.cn
http://8NZ3bjXU.htktn.cn
http://5JJ9tdRc.htktn.cn
http://ERrN32Of.htktn.cn
http://LTLDvDuo.htktn.cn
http://6aHbVwqy.htktn.cn
http://AA1hzhZZ.htktn.cn
http://far5j9Jb.htktn.cn
http://8QjoVwPO.htktn.cn
http://43Bo2yKx.htktn.cn
http://Th6eE6FJ.htktn.cn
http://AQYBVjvI.htktn.cn
http://G15lInDP.htktn.cn
http://OCwVCCOO.htktn.cn
http://Ldu1TrYy.htktn.cn
http://qtslbEsh.htktn.cn
http://www.dtcms.com/a/363640.html

相关文章:

  • anaconda下载与pycharm解析器配置
  • TypeScript:内置高级类型
  • vue2 跟 vue3 对比总结
  • Java集合遍历的方法有哪些
  • T40N君正/INGENIC专业嵌入式CPU计算能力,集成XBurst2双核处理器(1.2GHz)、RISC-V协处理器和神经网络加速器(2TOPS算力)
  • 在 macOS 下升级 Python 几种常见的方法
  • 【LeetCode数据结构】栈和队列的应用
  • 洛谷P3811 【模板】模意义下的乘法逆元
  • 硬件开发1-51单片机1
  • 嵌入式 - 硬件:51单片机
  • LeetCode算法日记 - Day 29: 重排链表、合并 K 个升序链表
  • HTML第三课:特殊元素
  • CICD实战(3) - 使用Arbess+GitLab+Hadess实现Java项目构建/上传制品库
  • 人工智能之数学基础:分布函数对随机变量的概率分布情况进行刻画
  • PromptHero-最受欢迎的AI提示词网站
  • TIOBE 8月编程语言榜深度解析:Python占比突破26%,Perl成最大黑马
  • 【3D打印】3D打印机首次使用心得
  • Git相关的命令
  • 力扣hot100:缺失的第一个正数(哈希思想)(41)
  • 领导层必看:Curtain e-locker为您轻松管理“文件外发“
  • MySQL 多表查询方法
  • day42-单片机
  • 基于3dtitle模型无法双面渲染问题
  • 友思特案例 | 食品行业视觉检测案例集锦(三)
  • 实验4-HTTP协议的运行过程
  • 失业落伍前端, 尝试了一个月 ai 协助编程的真实感受
  • Vscode + docker + qt 网络监听小工具
  • 25.9.2_CTF_reverse_TEA算法
  • 项目解析:技术实现与面试高频问题
  • 交叉熵损失函数