查询CMD在注册表中的位置及命令行编辑快捷方式属性的方法
问题解答
1. CMD 在注册表中的位置
CMD的显示相关设置(包括文本大小、字体、颜色等)主要存储在以下注册表路径:
- 用户级默认设置:
HKEY_CURRENT_USER\Console
这个路径下的键值会作为所有新CMD窗口的默认配置,比如FontSize(DWORD类型,值为高度<<16 | 宽度,例如16号字体对应值为0x100010)、FaceName(字体名称,如Consolas)等。 - 特定快捷方式/窗口的自定义设置:如果某一个CMD快捷方式(比如BAT文件的快捷方式)被手动修改过属性,系统会在
HKEY_CURRENT_USER\Console下创建一个以该快捷方式目标路径转义后的字符串为名的子项,例如目标为C:\Users\Wen\Desktop\test.bat的快捷方式,对应的子项名称可能是C:_Users_Wen_Desktop_test.bat,里面存储该窗口独有的显示设置。
另外,CMD的命令行为相关设置(比如是否启用延迟扩展)存储在:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor(系统级)HKEY_CURRENT_USER\Software\Microsoft\Command Processor(用户级)
2. 通过命令行编辑快捷方式属性
可以用PowerShell脚本实现修改快捷方式的显示属性,无需手动操作。以下是示例脚本,用于修改指定BAT快捷方式的字体大小为16号:
$shortcutPath = "C:\Users\Wen\Desktop\MyScript.lnk" $shell = New-Object -ComObject WScript.Shell $shortcut = $shell.CreateShortcut($shortcutPath) # 保存快捷方式原有属性 $shortcut.Save() # 转义目标路径,匹配注册表子项命名规则 $targetPath = $shortcut.TargetPath -replace "\\", "_" $regPath = "HKCU:\Console\$targetPath" # 不存在则创建注册表子项 if (-not (Test-Path $regPath)) { New-Item -Path $regPath -Force | Out-Null } # 设置字体大小为16(DWORD值,格式为高度<<16 | 宽度,宽度为0表示自适应) Set-ItemProperty -Path $regPath -Name "FontSize" -Value 0x100010 -Type DWord # 可选:设置字体为Consolas Set-ItemProperty -Path $regPath -Name "FaceName" -Value "Consolas" -Type String
如果需要批量修改所有BAT快捷方式的属性,可以遍历目录下的.lnk文件并执行上述逻辑。
另外,若希望所有新创建的CMD/BAT窗口默认使用大字体,直接修改HKEY_CURRENT_USER\Console下的FontSize键值即可,无需逐个修改快捷方式。
内容的提问来源于stack exchange,提问作者Wen
相关产品推荐
相关产品推荐

