当前位置: 首页 > 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://www.xdnf.cn/news/1433035.html

相关文章:

  • 移动端网页设计vm+rem,和px实现方式对比
  • 【设计模式】三大原则 单一职责原则、开放-封闭原则、依赖倒转原则
  • Javascript》》JS》》ES6》 Map、Set、WeakSet、WeakMap
  • 【MATLAB绘图进阶】(3.1)从基础到高级的图形样式控制
  • Android14 init.rc各个阶段的主要操作详解2
  • gbase8s之导出mysql导入gbase8s
  • 良策金宝AI:电力工程的“最强大脑”,如何重塑设计新范式?
  • css中的v-bind 动态变化
  • 技术架构设计--资源与链接、安全灾备
  • Android URC 消息透传 MTK 代码方案
  • T40N君正/INGENIC专业嵌入式CPU计算能力,集成XBurst2双核处理器(1.2GHz)、RISC-V协处理器和神经网络加速器(2TOPS算力)
  • 防止应用调试分析IP被扫描加固实战教程
  • 宋红康 JVM 笔记 Day11|直接内存
  • 爬虫基础学习 - Beautifulsoup
  • 电子电子技术知识------MOSFET管
  • 高校党建信息管理系统的设计与实现-(源码+LW+可部署)
  • 实验4-HTTP协议的运行过程
  • 【大前端】Vue 和 React 主要区别
  • React 中 key 的作用
  • C#---共享项目
  • 解决戴尔笔记本电脑键盘按键部分失灵
  • python 创建websocket教程
  • 从自动化到智能化:家具厂智能化产线需求与解决方案解析
  • Qt内存映射到文件,解决打开大文件占用内存高的问题
  • STM32-FreeRTOS操作系统-任务管理
  • Linux - 进程切换 进程调渡
  • 【Linux】进程信号
  • 第2.7节:多模态大模型之Midjourney
  • AI与低代码时代,自动化测试平台如何选型?主流工具详细对比及选型标准解析
  • github添加SSH密钥