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

news2024/11/29 0:45:26

文章目录

    • 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/793123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Is Mapping Necessary for Realistic PointGoal Navigation 论文阅读和代码分析

论文 论文信息 题目:Is Mapping Necessary for Realistic PointGoal Navigation? 作者:Ruslan Partsey、 Erik Wijmans 代码地址:rpartsey.github.io/pointgoalnav 来源:CVPR Abstract 目标:证明显式地图不是成功…

工信部、国家标准委联合印发《国家车联网产业指南(2023 版)》

国家工信部和标委发布了最新的《国家车联网产业标准体系建设指南(智能网联汽车)(2023 版)》,了解这篇文章,不论您是智能网联汽车的追随者,还是对智能网联汽车产业前景感兴趣的人,都非…

力扣热门100题之除自身意外数组的成绩【中等】

题目描述 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请不要使用除法,且在 O(n)…

Oracle 迁移 Hive 过程中遇到的问题总结

前言 最近一个小伙伴在做从 Oracle 到 Hive 的业务迁移工作,在迁移过程中属实遇到了一些坑,今天就来汇总一下这些坑,避免以后大家其他业务迁移的时候再出现类似的问题,即使出现了也可以拿过来进行对照解决。 问题1:Distinct window functions are not supported: count(…

matlab二维图形的绘制(1)

概述 matlab数学计算中有时候需要将函数通过图形更加直观的展示给用户的时候就需要使用到二维绘图。绘图常常采用的绘图命令便是 plot ,再添加一些辅助命令使得图形更加的形象直观。 二维绘图中也包括针状图,阶梯图,散点图,条形图…

Emacs之实现跨程序选中自动复制功能(一百一十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

阿里云服务器配置 内存,cpu等等

实例升配,https://help.aliyun.com/document_detail/25438.html?spma2c4g.11174283.6.780.2cbf4c070oeino#title-a5t-gg2-

分布式文件存储与数据缓存 Redis高可用分布式实践(上)

一、Reids概述 1.1 为什么要使用NoSQL 单机Mysql的美好年代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。 遇到问题: 随着用户数的…

异构线程池的c++实现方案

概要 通常线程池是同质的,每个线程都可以执行任意的task(每个线程中的task顺序执行),如下图所示: 但本文所介绍的线程和task之间有绑定关系,如A task只能跑在A thread上(因此称为异构线程池&am…

《脱离“一支笔、一双手、一道力扣”困境的秘诀》:突破LeetCode难题的五个关键步骤

导言: 在解决LeetCode等编程题时,不少人会陷入“一支笔、一双手、一道力扣(LeetCode)做一宿”的困境。尽管已经掌握了相关知识和算法,但在实际挑战中却无从下手。本文将分享如何摆脱这一困境的秘诀,让你在面…

Java带符号右移(>>)、不带符号右移(>>>)

Java的右移涉及带符号右移(>>)、不带符号右移(>>>)。 对于正数,因为符号位是0,带符号右移和不带符号右移左侧都用0填充,所以结果相同。 对于负数,因为符号位是1&…

python + requests实现的电商API接口自动化框架详细教程

1、首先,我们先来理一下思路。 正常的电商接口测试流程是什么? 脑海里的反应是不是这样的: 确定测试接口的工具 —> 配置需要的接口参数 —> 进行测试 —> 检查测试结果(有的需要数据库辅助) —> 生成测…

第一节:我用Python论证移动平均线(MA)真的靠谱吗?

视频地址:点我查看文章配套视频 什么是MA 所谓“移动平均线”是指一段时间内股票价格的算术平均线,通常以收盘价作为计算值。它是一种趋向类技术指标。 在证券投资中,要赚钱无非是降低成本、提高收入,以期获得较高利润&#xff0…

内存泄漏是什么?有什么危害

内存泄漏是什么?有什么危害 1. 前言1.内存泄漏是什么?2. 为什么会发生内存泄漏3. 内存泄漏的危害4. 总结 1. 前言 在各种项目开发中,内存泄漏是一个很严重的问题。对资源管理、性能优越、系统稳定性,以及是否安全产生极大印象。本…

Seaborn库绘制单变量分布和双变量分布

Matplotlib虽然已经是比较优秀的绘图库了,但是它有个今人头疼的问题,那就是API使用过于复杂,它里面有上千个函数和参数,属于典型的那种可以用它做任何事,却无从下手。 Seaborn基于 Matplotlib核心库进行了更高级的API…

1-Linux的目录结构

Linux的目录结构是规定好的,不可以随意进行更改! Linux的文件系统是采用级层式的树状目录结构,最上层是根目录–/,然后再在根目录下创建其它的目录。 各个目录中主要负责的功能和作用如下:(主体的结构一定…

TypeScript入门学习汇总

1.快速入门 1.1 简介 TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准。 TypeScript 由微软开发的自由和开源的编程语言。 TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在…

65英寸OLED透明屏的显示效果出色吗?

65英寸OLED透明屏是一种新型的显示技术,它采用有机发光二极管(OLED)作为显示元件,具有高亮度、高对比度、快速响应和广视角等优点。 与传统的液晶显示屏相比,OLED透明屏具有更高的透明度和更好的显示效果。 OLED透明屏…

VMPWN的入门级别题目详解(一)

实验一 VMPWN1 题目简介 这是一道基础的VM相关题目,VMPWN的入门级别题目。前面提到VMPWN一般都是接收字节码然后对字节码进行解析,但是这道题目不接受字节码,它接收字节码的更高一级语言:汇编。程序直接接收类似”mov”、”add”…

Python安装pip命令教程及更改镜像源

1、官方地址:地址 2、解压完成后,我们进入pip-23.2.1文件目录,找到setup.py,打开cmd进入此目录,或者在文件地址中输入cmd打开,输入以下命令: python setup.py install进l进行安装,安…