命令提示符和CMD有什么区别?

8

我有Windows 7、Windows 8和Windows 10系统,它们的表现都很相似。

当我在开始菜单中键入命令提示符并按下回车键时,会出现一个名为Command Prompt的窗口。我将其背景设为蓝色,文本设为绿色。当我在命令行中键入start、cmd或批处理文件的名称时,它会打开一个名为cmd的窗口,我将其背景设为黑色,文本设为绿色。它似乎储存了颜色,但是...唔...

当我在Windows 10的开始菜单中键入cmd时,会出现一个名为“cmd”的窗口,但它会从Command Prompt窗口中恢复蓝色背景和绿色文本,但在该窗口中键入cmd会打开一个新的窗口,使用黑色背景和绿色文本。当我双击批处理文件时,它会打开一个标题为命令提示符的窗口,字体不同,背景为黑色,文本为白色。当我键入command时,它只会打印DOS和版权标头,但是start command会打开一个名为COMMAND.COM的窗口,字体不同,背景为黑色,文本为白色。

当我在命令提示符或cmd中键入cmd /?时,屏幕上会出现一个参数列表。其中之一是/Q。它说在新实例中关闭回显。当我在命令提示符或cmd中键入cmd /Q时,它会用另一个具有相同标题但黑色和绿色配色方案的窗口替换该窗口,并且不关闭回显。当我键入start cmd /q时,发生了完全相同的事情,但是start cmd.exe /q实际上会产生一个错误,指出/Q不是有效的开关。

这只是我面临的问题的一小部分,我甚至无法开始解决它。如果有一位老手知道所有看似杂乱无章的命令提示符之间的微妙差异以及调用它们的方法,我将非常感激他/她解决这个问题。


1
尝试使用 start "" cmd /Q,因为 start 可能将第一个项解释为窗口标题而不是命令,因此 /Q 可能被视为 start 的开关而不是 cmd 的开关... - aschipfl
2个回答

11

我会尝试澄清一些困惑,但是我无法做到完美,因为微软确保了这种混乱无法完全解决,并且每个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 Command Line Client - Unicode" 指定为命令提示符的窗口标题。

因此,如果您看到具有不同样式的命令提示符,那么很可能是因为您在HKEY_CURRENT_USER\Console\下具有条目。它似乎没有任何意义的事实是由于所选子键取决于命令提示符窗口的标题,这可能因您如何启动它而异。


2
绝对棒极了! - Musixauce3000
1
很高兴能够帮助!(另一个满意的客户!)C-:= - Mike Nakis
2
除此之外,问题中提到的 command.com 窗口是完全不同的东西:那是在 16 位仿真环境下运行的旧 MS-DOS 命令解释器。它对大多数人来说不太可能有用,并且仅在 Windows 的 32 位版本上可用。 - Harry Johnston
很有趣,Harry,因为我能够在我的64位Windows 10机器上访问它。 - Musixauce3000
@Musixauce3000,你上一次运行病毒检查器是什么时候? - Mike Nakis
1
自从发现我可以访问command.com以来,我就没有这样做过。也许我应该这样做。 - Musixauce3000

9

命令提示符只是一个名为“Command Prompt”的cmd.exe快捷方式:

enter image description here

样式只是快捷方式具有自己的属性的结果。 您还可以拥有其他指向cmd.exe的快捷方式,每个快捷方式都可以有自己的样式选项。

至于窗口标题,cmd只将窗口标题设置为启动cmd的文件名。 如果您创建了一个名为“my_shell”的cmd.exe快捷方式,则会得到一个名为“my_shell”的cmd窗口。


1
那么你的意思是当我在开始菜单中输入“命令提示符”时,它会返回一个名为“命令提示符”的 cmd.exe 快捷方式,这就是任何人在 cmd.exe 窗口顶部看到“命令提示符”这个词的唯一原因?当然,除非用户脚本明确包含一行来设置标题为“命令提示符”。 - Musixauce3000
1
@Musixauce3000 确切地说。您可以自己查看,如果您在开始菜单中执行“右键单击->属性”“命令提示符”。或者如果您执行“右键单击->打开文件位置”,它将带您到cmd.exe的文件位置。 - Andy Guibert
2
非常感谢。这个答案和Mike的回答使我更好地理解了我在问题中无法掌握的混乱部分:p谢谢! - Musixauce3000

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接