山东建设厅网站首页,外贸网站制作公司,医院网站建设具体内容,行业网站文章目录 1. 默认值#xff08;控制台窗口#xff09;属性2. C:\Windows\System32\cmd.exe 属性3. 命令提示符属性4. 自定义某标题cmd窗口属性5. cmd快捷方式的属性总结 最近在写某个批处理脚本时#xff0c;意外发现 Windows系统中#xff0c;在不… 文章目录 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 然后开始做验证。 1从开始菜单Windows系统命令提示符打开 2从WinR运行输入cmd回车打开 3从.bat批处理双击打开举例test.bat内容 echo off pause 从下边测试效果可以看出默认值对这三种方式打开的窗口属性都生效了。 查看注册表HKEY_CURRENT_USER\Console其中ScreenColors值用来控制窗口前景色及背景色其值由两个16进制数字组成这两个数字代表注册表中ColorTable编号。举例ScreenColors值为87则表示使用ColorTable08指定的值作为背景色使用ColorTable07指定的值作为前景色。该解释参考自color /?
2. “C:\Windows\System32\cmd.exe” 属性
WinR运行输入cmd回车打开cmd窗口在顶部标题栏中右键 属性打开C:\Windows\System32\cmd.exe属性窗口界面在颜色选项卡下设置屏幕背景为第4个ColorTable03蓝色确认保存。 然后开始做验证。 1从开始菜单Windows系统命令提示符打开 2从WinR运行输入cmd回车打开 3从.bat批处理双击打开举例test.bat内容 echo off pause 从下边测试效果可以看出修改cmd.exe属性仅对通过C:\Windows\System32\cmd.exe打开的窗口有效对从开始菜单打开的命令提示符窗口无效双击.bat批处理实际上也是调用的C:\Windows\System32\cmd.exe程序来执行的 此时你如果打开注册表HKEY_CURRENT_USER\Console你会发现在它下边多了个子项%SystemRoot%_System32_cmd.exe如果你从没有修改过C:\Windows\System32\cmd.exe属性是没有这个子项的。 在这个子项下ScreenColors的值 就是新修改的cmd窗口的背景色值前景色配置37即 背景色为ColorTable03的指定的颜色值前景色为ColorTable07的指定的颜色值。 3. 命令提示符属性
从开始菜单Windows系统命令提示符打开。在顶部标题栏中右键 属性打开命令提示符属性窗口界面在颜色选项卡下设置屏幕背景为淡绿色ColorTable10蓝色确认保存。 然后开始做验证。 1从开始菜单Windows系统命令提示符打开 2从WinR运行输入cmd回车打开 3从.bat批处理双击打开举例test.bat内容 echo off pause 从下边测试效果可以看出修改命令提示符属性仅对命令提示符窗口有效。 此时你如果打开注册表HKEY_CURRENT_USER\Console在其下是没有任何关于命令提示符相关的项。 你可以将注册表导出然后重新修改命令提示符的属性然后再导出注册表将两个导出的注册表进行比对来验证这一点 4. 自定义某标题cmd窗口属性
在注册表HKEY_CURRENT_USER\Console下新增一个子项这里假如名为 Chen然后再在这个子项下添加一个DWORD类型的值名称为ScreenColors值为十六进制的c7表示背景色为淡红色前景色白色。 然后开始做验证。 1随便一种方式打开一个cmd命令行窗口输入start ChenChen替换为你自定义的命令行窗口标题 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不要改保持原样 然后开始做验证。 1分别双击两个lnk快捷方式 从测试结果看lnkcmd1.lnk使用了默认属性值而lnkcmd2.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.txt、lnkinfo2.txt可以看出 1lnkcmd2.lnk的命令行窗口属性是保存到该快捷方式文件本身的在lnkinfo2.txt体现在extra.CONSOLE_PROPERTIES_BLOCK对象各属性值其中这里的fill_attributes就是前景色、背景色属性信息215是十进制转换为十六进制为d7d表示背景色对应ColorTable13对应的颜色值淡紫色7表示前景色对应ColorTable07对应的颜色值白色 2lnkcmd1.lnk的命令行窗口属性从lnkinfo1.txt信息看没有找到extra.CONSOLE_PROPERTIES_BLOCK对象因此推测它应该是沿用了HKEY_CURRENT_USER\Console注册表中相关的属性配置。 为了验证【lnkcmd1.lnk的命令行窗口属性是使用HKEY_CURRENT_USER\Console注册表中相关的属性配置】这个推出再做个测试。 将lnkcmd1.lnk重命名为Chen.lnk然后双击打开这个快捷方式。 细心的你应该能发现这个颜色值就是 【4. 自定义某标题cmd窗口属性】中在注册表HKEY_CURRENT_USER\Console\Chen下配置的ScreenColors的值c7背景色为淡红色前景色白色。
也就是说Chen.lnk快捷方式文件里没有命令行窗口属性信息于是它从注册表HKEY_CURRENT_USER\Console\Chen去找如果找到就加载配置如果没有同标题名的Chen子项就是用HKEY_CURRENT_USER\Console里默认的配置信息。
总结
通过cmd.exe应用程序直接打开的命令行窗口会在注册表HKEY_CURRENT_USER\Console找与窗口标题同名的子项的配置如果未找到子项或子项下没有某个配置则使用HKEY_CURRENT_USER\Console下的默认配置从cmd.exe创建的.lnk快捷方式打开的命令行窗口如果从未修改过该快捷方式对应的属性那么它打开的窗口属性是从注册表HKEY_CURRENT_USER\Console下同名的子项中加载如果没找到子项或子项下没有某个配置则加载HKEY_CURRENT_USER\Console下的默认配置如果修改过.lnk快捷方式对应的属性那么它的命令行窗口属性信息将保存到快捷方式文件本身而不再从注册表加载配置开始菜单的命令提示符实际上就是一个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