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

Windows 不同方式打开的cmd/dos窗口属性配置不同

文章目录

    • 1. 默认值(控制台窗口)属性
    • 2. "C:\Windows\System32\cmd.exe" 属性
    • 3. "命令提示符"属性
    • 4. 自定义某标题cmd窗口属性
    • 5. cmd快捷方式的属性
    • 总结

最近在写某个批处理脚本时,意外发现 Windows系统中,在不同路径打开的cmd/dos窗口,属性配置竟然不同。

接下来探究下不同路径下打开的dos窗口,属性配置是否相同。

阅读本文之前,建议先看下:Windows 打开cmd/dos窗口的12种方式(全网最全)

以下演示在Win10系统,其他版本系统可能会有不同
为了简便起见,如无特殊说明,就以窗口背景不同作为配置的区别

1. 默认值(控制台窗口)属性

右键开始>命令提示符,打开cmd窗口(其他方式打开也行),在顶部标题栏中右键 > 默认值,打开控制台窗口属性窗口界面,在颜色选项卡下,设置屏幕背景为灰色ColorTable08,确认保存

属性-颜色 里提供了16个ColorTable,数量上不能新增或删除,但是可以修改颜色值。
修改方法:
方法1:在这个窗口选定某个ColorTable,在选定的颜色值区域,修改R G L值,确认即可保存;
方法2:修改注册表:HKEY_CURRENT_USER\Console,找到名称为ColorTable00~ColorTable15 共16个,修改对应的值即可,其中值十六进制表示法,例如:dd963a3a代表R的值十进制5896代表G的值十进制150dd代表L的值十进制221

cmd窗口默认值

然后开始做验证。
1)从开始菜单>Windows系统>命令提示符打开;
2)从Win+R运行>输入cmd回车,打开;
3)从.bat批处理,双击打开(举例:test.bat内容 @echo off & pause
从下边测试效果,可以看出,默认值对这三种方式打开的窗口属性都生效了。

测试效果1

查看注册表HKEY_CURRENT_USER\Console,其中ScreenColors值用来控制窗口前景色及背景色,其值由两个16进制数字组成,这两个数字代表注册表中ColorTable编号。举例:ScreenColors值为87,则表示使用ColorTable08指定的值作为背景色,使用ColorTable07指定的值作为前景色。该解释参考自color /?

2. “C:\Windows\System32\cmd.exe” 属性

Win+R运行>输入cmd回车,打开cmd窗口,在顶部标题栏中右键 > 属性,打开C:\Windows\System32\cmd.exe属性窗口界面,在颜色选项卡下,设置屏幕背景为第4个ColorTable03,蓝色,确认保存。

修改cmd.exe属性

然后开始做验证。
1)从开始菜单>Windows系统>命令提示符打开;
2)从Win+R运行>输入cmd回车,打开;
3)从.bat批处理,双击打开(举例:test.bat内容 @echo off & pause
从下边测试效果,可以看出,修改cmd.exe属性,仅对通过C:\Windows\System32\cmd.exe打开的窗口有效,对从开始菜单打开的命令提示符窗口无效(双击.bat批处理,实际上也是调用的C:\Windows\System32\cmd.exe程序来执行的)

测试效果2

此时你如果打开注册表HKEY_CURRENT_USER\Console,你会发现在它下边多了个子项%SystemRoot%_System32_cmd.exe(如果你从没有修改过C:\Windows\System32\cmd.exe属性,是没有这个子项的)。
在这个子项下,ScreenColors的值 就是新修改的cmd窗口的背景色值&前景色配置37,即 背景色为ColorTable03的指定的颜色值,前景色为ColorTable07的指定的颜色值。

cmd.exe注册表项配置

3. "命令提示符"属性

开始菜单>Windows系统>命令提示符打开。在顶部标题栏中右键 > 属性,打开命令提示符属性窗口界面,在颜色选项卡下,设置屏幕背景为淡绿色ColorTable10,蓝色,确认保存。

修改命令提示符属性

然后开始做验证。
1)从开始菜单>Windows系统>命令提示符打开;
2)从Win+R运行>输入cmd回车,打开;
3)从.bat批处理,双击打开(举例:test.bat内容 @echo off & pause
从下边测试效果,可以看出,修改命令提示符属性,仅对命令提示符窗口有效。

测试效果3
此时你如果打开注册表HKEY_CURRENT_USER\Console,在其下,是没有任何关于命令提示符相关的项。

你可以将注册表导出,然后重新修改命令提示符的属性,然后再导出注册表,将两个导出的注册表进行比对,来验证这一点

4. 自定义某标题cmd窗口属性

在注册表HKEY_CURRENT_USER\Console下,新增一个子项,这里假如名为 Chen,然后再在这个子项下添加一个DWORD类型的值,名称为ScreenColors,值为十六进制的c7,表示背景色为淡红色,前景色白色。

在这里插入图片描述

然后开始做验证。
1)随便一种方式,打开一个cmd命令行窗口,输入start "Chen"Chen替换为你自定义的命令行窗口标题
2)然后用Start命令再启动一个"Test"标题的命令行窗口(确认你未在注册表未使用过"Test"作为子项名)
验证效果如下↓ ,从测试结果看,标题为Chen的命令行窗口,使用了注册表HKEY_CURRENT_USER\Console下的子项Chen里配置的ScreenColors值,而Test标题的命令行窗口,使用了注册表HKEY_CURRENT_USER\Console里的ScreenColors值(即默认属性值)

自定义标题的窗口属性

5. cmd快捷方式的属性

1)进入到C:\Windows\system32目录,右键菜单创建快捷方式,将快捷方式放到桌面,然后给快捷方式建一个名字,比如我这里命名为lnkcmd1.lnk,然后再从lnkcmd1.lnk复制出来一个lnkcmd2.lnk
2)双击lnkcmd2.lnk 打开命令行窗口,在标题栏右键>属性,切换到颜色选项卡,然后在这个快捷方式文件上,右键>属性,在颜色选项卡下,设置屏幕背景为淡绿色ColorTable13,淡紫色,应用保存;
lnkcmd1.lnk不要改,保持原样)

修改lnk属性

然后开始做验证。
1)分别双击两个lnk快捷方式
从测试结果看,lnkcmd1.lnk使用了默认属性值,而lnkcmd2.lnk使用了自定义的属性值。

对比两个新创建的lnk快捷方式
此时你如果打开注册表HKEY_CURRENT_USER\Console,在其下,是没有任何关于lnkcmd2.lnk相关的项的。

其实lnkcmd2.lnk的属性是保存到了这个快捷方式文件内的。下边来验证下这点。
将下面的python代码,保存到getLnkInfo.py文件,然后也放到桌面。

# -*- coding:utf-8 -*-
import sys
import LnkParse3
f_path = sys.argv[1]
with open(""+f_path,"rb") as lf:ldata = LnkParse3.lnk_file(lf)ldata.print_json()         # 打印输出格式化后的json数据

在命令行分别执行如下命令:
注意:
1)你需要安装python3环境,并安装LnkParse3库,命令pip install LnkParse3
2)桌面路径需改为你自己的;
3).lnk.py文件放在同一目录,否则你需要使用绝对路径;

cd C:\Users\cyinl\Desktop
python getLnkInfo.py lnkcmd1.lnk > lnkinfo1.txt
python getLnkInfo.py lnkcmd2.lnk > lnkinfo2.txt

然后用文本对比工具 对比 lnkinfo1.txtlnkinfo2.txt,可以看出
1)lnkcmd2.lnk的命令行窗口属性是保存到该快捷方式文件本身的,在lnkinfo2.txt体现在extra.CONSOLE_PROPERTIES_BLOCK对象各属性值,其中这里的fill_attributes就是前景色、背景色属性信息,215是十进制,转换为十六进制为d7d表示背景色对应ColorTable13对应的颜色值(淡紫色),7表示前景色对应ColorTable07对应的颜色值(白色)
2)lnkcmd1.lnk的命令行窗口属性,从lnkinfo1.txt信息看,没有找到extra.CONSOLE_PROPERTIES_BLOCK对象,因此推测它应该是沿用了HKEY_CURRENT_USER\Console注册表中相关的属性配置。

lnk属性对比

为了验证【lnkcmd1.lnk的命令行窗口属性,是使用HKEY_CURRENT_USER\Console注册表中相关的属性配置】这个推出,再做个测试。
lnkcmd1.lnk重命名为Chen.lnk,然后双击打开这个快捷方式。

Chen.lnk命令行窗口
细心的你应该能发现,这个颜色值,就是 【4. 自定义某标题cmd窗口属性】中,在注册表HKEY_CURRENT_USER\Console\Chen下配置的ScreenColors的值c7(背景色为淡红色,前景色白色)。

也就是说Chen.lnk快捷方式文件里没有命令行窗口属性信息,于是它从注册表HKEY_CURRENT_USER\Console\Chen去找,如果找到就加载配置,如果没有同标题名的Chen子项,就是用HKEY_CURRENT_USER\Console里默认的配置信息。

总结

  1. 通过cmd.exe应用程序直接打开的命令行窗口,会在注册表HKEY_CURRENT_USER\Console,找与窗口标题同名的子项的配置,如果未找到子项或子项下没有某个配置,则使用HKEY_CURRENT_USER\Console下的默认配置;
  2. (从cmd.exe创建的).lnk快捷方式打开的命令行窗口,如果从未修改过该快捷方式对应的属性,那么它打开的窗口属性,是从注册表HKEY_CURRENT_USER\Console下同名的子项中加载,如果没找到子项或子项下没有某个配置,则加载HKEY_CURRENT_USER\Console下的默认配置;
  3. 如果修改过.lnk快捷方式对应的属性,那么它的命令行窗口属性信息,将保存到快捷方式文件本身,而不再从注册表加载配置;
  4. 开始菜单的命令提示符,实际上就是一个lnk快捷方式,因此它遵循总结2、3的规则


相关文章:
Windows 打开cmd/dos窗口的12种方式(全网最全)
Windows 如何打开和编辑.lnk文件



参考资料:
what’s the difference between command prompt and cmd?
Where do my Windows Command Prompt properties get saved

相关文章:

Windows 不同方式打开的cmd/dos窗口属性配置不同

文章目录 1. 默认值(控制台窗口)属性2. "C:\Windows\System32\cmd.exe" 属性3. "命令提示符"属性4. 自定义某标题cmd窗口属性5. cmd快捷方式的属性总结 最近在写某个批处理脚本时,意外发现 Windows系统中,在不…...

性能优化-webpack配置gzip

3步搞定,实测1.3Mjs压缩到363k,体积减少70% 1.装包 yarn add compression-webpack-plugin --dev 2.配置webpack 打开config/webpack.config.js 1)在 module.exports 导出函数前面引入插件 // gzip插件 const CompressionPlugin require(&qu…...

RabbitMQ 教程 | 第3章 客户端开发向导

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…...

基于深度学习的CCPD车牌检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于CCPD数据集的高精度车牌检测系统可用于日常生活中检测与定位车牌目标,利用深度学习算法可实现图片、视频、摄像头等方式的车牌目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型训练数据集…...

input元素中的form属性有什么用?

在HTML中,input元素的form属性用于指定该输入字段所属的表单(form元素)。通过将input元素的form属性设置为相应的表单的id值,可以将输入字段与表单进行关联。 这个属性对于两个主要目的非常有用: 表单关联&#xff1…...

【数据结构篇C++实现】- 特殊的线性表 - 串

友情链接:C/C系列系统学习目录 文章目录 串🚀一、串的定义🚀二、串的存储结构🛴(一)串的顺序存储结构1、定长顺序存储表示2、堆分配存储表示 🛴(二)串的链式存储结构3、块…...

DevOps系列文章 之 Springboot单元测试

在没有代码生成工具或尝试一门新的 ORM框架时,当我们希望不去另外写 Service 和 Controller 来验证 DAO 层的代码不希望只通过接口请求的方式来验证时,这时候单元测试的方式就可以帮助我们满足这一需求。 在我们开发Web应用时,经常会直接去观…...

04 linux之C 语言高级编程

gcc和gdb GNU工具 编译工具:把一个源程序编译为一个可执行程序调试工具:能对执行程序进行源码或汇编级调试软件工程工具:用于协助多人开发或大型软件项目的管理,如make、CVS、Subvision其他工具:用于把多个目标文件链…...

深入学习 Redis - Stream、Geospatial、HyperLogLog、Bitmap、Bitfields 类型扩展

目录 前言 Stream geospatial HyperLogLog Bitmaps Bitfields 前言 redis 中最关键的五个数据类型 String、List、Hash、Set、Zset 应用最广泛,同时 redis 也推出了额外的 5 个数据类型,他们分别是针对特殊场景才进行的应用的. Ps:这几种…...

Windows11+Opencv+Clion编译源码

Windows11OpencvClion编译源码 参考:https://www.robotsfan.com/posts/69395e08.html 注意事项 编译过程中使用的软件,开源码等所有工具的安装路径一定不要有中文和空格。cmake过程会下载一些文件,如果是局域网的话可能下载不下来&#xf…...

【机器学习】Cost Function

Cost Function 1、计算 cost2、cost 函数的直观理解3、cost 可视化总结附录 首先,导入所需的库: import numpy as np %matplotlib widget import matplotlib.pyplot as plt from lab_utils_uni import plt_intuition, plt_stationary, plt_update_onclic…...

【黑马头条之内容安全第三方接口】

本笔记内容为黑马头条项目的文本-图片内容审核接口部分 目录 一、概述 二、准备工作 三、文本内容审核接口 四、图片审核接口 五、项目集成 一、概述 内容安全是识别服务,支持对图片、视频、文本、语音等对象进行多样化场景检测,有效降低内容违规风…...

回归预测 | MATLAB实现GRNN广义回归神经网络多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现GRNN广义回归神经网络多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现GRNN广义回归神经网络多输入单输出回归预测(多指标,多图)效果一览基本介绍程序设计参考资料效果一览 基本介绍 MATLAB实现GRNN广义回归神经网络多输入单输出回归…...

STM32 HAL库函数——HAL_UART_RxCpltCallback()详解

HAL_UART_RxCpltCallback函数 他是谁,他和谁有关功能用法每收到一个字符,就自动调用一次??示例----接收未知长度的字符 他是谁,他和谁有关 HAL_UART_RxCpltCallback 是一个回调函数,用于在使用 HAL 库进行…...

前端调用合约如何避免出现transaction fail

前言: 作为开发,你一定经历过调用合约的时候发现 gas fee 超出限制,但是不知道报了什么错。这个时候一般都是触发了require错误合约校验。对于用户来说他不理解为什么一笔交易会花费如此大的gas,那我们作为开发如何尽量避免这种情…...

选择器的使用

目录 层级选择器属性选择器伪类选择器结构伪类选择器目标伪类选择器 层级选择器 /*子代选择器:选出box下的所有li标签*/.box>li{background-color: aliceblue;}/* 选出box后面的第一个兄弟li标签 */.boxli{background-color: aliceblue;}/* 选出box后面的所有兄…...

软考A计划-系统集成项目管理工程师-项目干系人管理-上

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…...

F5 LTM 知识点和实验 2-负载均衡基础概念

第二章:负载均衡基础概念 目标: 使用网页和TMSH配置virtual servers,pools,monitors,profiles和persistence等。查看统计信息 基础概念: Node一个IP地址。是创建pool池的基础。可以手工创建也可以自动创…...

安全学习DAY08_算法加密

算法加密 漏洞分析、漏洞勘测、漏洞探针、挖漏洞时要用到的技术知识 存储密码加密-应用对象传输加密编码-发送回显数据传输格式-统一格式代码特性混淆-开发语言 传输数据 – 加密型&编码型 安全测试时,通常会进行数据的修改增加提交测试 数据在传输的时候进行…...

OpenCloudOS 与PolarDB全面适配

近日,OpenCloudOS 开源社区签署阿里巴巴开源 CLA (Contribution License Agreement, 贡献许可协议), 正式与阿里云 PolarDB 开源数据库社区牵手,并展开 OpenCloudOS (V8)与阿里云开源云原生数据库 PolarDB 分布式版、开源云原生数…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...