我有Windows 7,Windows 8和Windows 10系统,它们的行为类似.
当我在开始菜单中键入命令提示符并按Enter键时,会出现一个标题为命令提示符的窗口.我给它一个蓝色背景和一个绿色文本.当我在命令行中键入start,cmd或bat文件的名称时,它会打开一个标题为cmd的窗口,我给出了黑色和绿色文本的背景.似乎颜色存储但是...嗯......
当我在Windows 10的开始菜单中键入cmd时,会出现一个标题为"cmd"的窗口,但它会从"命令提示符"窗口中调出蓝色背景和绿色文本,但是cmd
从该窗口键入会打开一个新的黑色和绿色样式.当我双击批处理文件时,它会打开一个标题为命令提示符的窗口,其中包含不同的字体和带有白色文本的黑色背景.当我输入command
它时只打印DOS和版权标题,但start command
打开一个标题为COMMAND.COM的窗口,其中包含不同的字体和带有白色文本的黑色背景.
当cmd /?
在屏幕上显示键入参数列表时.其中一个是/ Q. 它说它在新实例中关闭了echo.当我输入cmd /Q
命令提示符或cmd时,它会使用相同的标题替换窗口,但使用黑色和绿色配色方案,并且不会关闭回声.当我键入时start cmd /q
,完全相同的事情发生,但'start cmd.exe/q'实际上产生一个错误,指出/ Q不是有效的开关.
这真的只是我在这里遇到的问题的一小部分,我甚至无法开始整理它.如果那里的一些老兵知道明显的命令提示之间的微妙差异,以及调用它们的方式,我会很感激那个人为我排序那个烂摊子.
我将尽力解决一些困惑,但我不能做得很完美,因为微软已经确保无法彻底解决这些问题,并且他们改变了每个版本的Windows的混乱.因此,例如,我即将提供的一些信息可能不适用于Windows 8和Windows 10.但它确实适用于Windows 7.
"命令提示符"是Windows下控制台应用程序的正式名称."cmd.exe"(或只是"cmd")是同一应用程序的可执行二进制文件的名称.
Windows将命令提示符的默认设置存储在注册表中HKEY_CURRENT_USER\Console
.当一个新的命令提示符打开时,windows将获取该命令提示符的窗口标题,并尝试查看HKEY_CURRENT_USER\Console\
该名称下是否有一个子项.如果找到一个子键,它会从中读取值.如果找不到子项,则会读取它找到的默认值HKEY_CURRENT_USER\Console
.
例如,在我的系统上,存在一个HKEY_CURRENT_USER\Console\MySQL 5.6 Command Line Client - Unicode
密钥,很可能是因为MySQL安装程序创建了此密钥,因此它们的命令提示符与命令提示符的其他实例看起来不同.当然,为了使其工作,启动其命令提示符的快捷方式必须指定"MySQL 5.6命令行客户端 - Unicode"作为命令提示符的窗口标题.
因此,如果您看到具有不同样式的命令提示,那可能是因为您有条目HKEY_CURRENT_USER\Console\
.事实上它似乎没有任何意义,这是因为所选的子键取决于命令提示符窗口的标题,这可能因启动方式而异.
命令提示符只是cmd.exe命名为"命令提示符"的快捷方式:
样式只是具有自己属性的快捷方式的结果.您还可以使用cmd.exe的其他快捷方式,每个快捷方式也可以有自己的样式选项.
至于窗口标题,cmd只是将窗口标题设置为启动cmd的文件名.如果您创建cmd.exe的快捷方式并将其命名为"my_shell".您将获得一个标题为"my_shell"的cmd窗口.