分享

[原创]Win2000/XP中的命令行[06-05-22] - WinPE、PowerSh...

 Synix 2009-03-25
Win2000/XP中的命令行

Updated:2006-05-22

Windows2000/XP所缺省支持的命令行环境主要有两个:cmd.exe(以下简称CMD)和command.com(以下简称COMMAND),尽管它们许多方面与DOS很相似,但它们都不是DOS。它们只是操作系统Windows的外壳界面,而DOS(例如MS-DOS、FreeDOS等)则是独立的操作系统。

CMD是最常用的命令行环境,提供对系统中所有命令行程序的支持,包括32位PE格式的控制台程序和16位MZ格式的DOS程序;但它本身是一个32位的PE程序,所以在运行16位DOS程序前需要模拟一个环境,那就是“NT下的DOS虚拟机(NT Virtual DOS Machine,简称NTVDM)”,由%SystemRoot%\system32下的ntvdm.exe提供支持。因此,当我们刚刚打开CMD时,进程管理器中会显示出cmd.exe进程,而当在其中运行了一个16位的DOS程序后(比如debug),又会多出一个ntvdm.exe进程。

COMMAND是运行16位DOS程序的兼容性命令行环境,这个环境仍然由ntvdm.exe提供,而COMMAND不再是一个独立的“命令解释器”,而只是一个为了与低版本系统相兼容,而设计出的一个16位命令行环境的入口。所以,在运行COMMAND后,进程管理器只有一个ntvdm.exe进程,而不会有command.com进程。


CMD vs COMMAND

与COMMAND相比,CMD缺省提供了更多的命令行特性,比如多国语言显示和输入法(代码页)、更完善的字体(TrueType)、可以滚动浏览的窗口(屏幕缓冲区)、命令行历史记录和宏命令(DOSKEY)、文件和目录名自动完成、功能增强的内部命令(命令扩展)、实时更新的环境变量(延迟扩展)等等,这些特性在启动16位程序后将失效。

与CMD相比,COMMAND更像一个虚拟的PC机,许多运行16位程序所需要的硬件和软件环境都可以通过它模拟出来。它的启动过程与DOS相似,通过%SystemRoot%\system32\config.nt配置内存环境并加载所需要的硬件驱动,通过%SystemRoot%\system32\autoexec.nt执行某些启动虚拟环境时需要自动执行的任务。


命令行中的中文

Windows2000/XP简体中文版的CMD虽然缺省地支持中文代码页(936),但是这只是对32位程序而言;在使用了16位程序后,由于ntvdm.exe的影响,代码页会被强制切换回英文(437),因而不仅无法正常显示中文,并经常伴随着“Invalid keyboard code specified”的错误提示;而COMMAND则仅支持英文代码页,无法使用chcp进行代码页的切换。

解决这个问题的办法是graftabl.exe,这个启用在图形模式下显示扩展字符集的功能的工具,可以使16位程序处在英文代码页环境下仍然可以显示中文。

如果在CMD中,首先运行chcp 437将内部代码页切换为英文,再运行graftabl 936启用中文字符集显示,此后无论是否运行16位程序,则输出代码页均为中文,但此时仍无法使用中文输入法输入中文。

如果在COMMAND中,则内部代码页已为英文,可直接运行graftabl 936启用中文字符集显示,此时可在COMMAND中显示中文,但也无法输入中文。

如果在批处理脚本中,则预先写入chcp 437>nul和graftabl 936>nul两句,可以保证以后运行16位程序时正常地显示中文。


其它重要的命令行

“故障恢复控制台”是Windows2000/XP安装光盘上提供的命令行环境,主要用于修复系统故障的修复,缺省并不被安装到系统中。

“PowerShell”是下一代Windows的命令行工具,将是CMD的替代品,但目前仍没有列入到Windows2000/XP的缺省配置中,它需要.Net框架2.0的支持。

“微软管理规范命令行”提供了到 WMI 的简单接口,这样即可利用 WMI 管理运行 Microsoft Windows 的计算机,提供了命令行或脚本方式浏览和管理系统资源的便捷方式,它是WindowsXP所带来的新工具,第一次运行时会自动进行初始化安装配置。


相关的概念

命令行解释器(Command Processor/Command Interpreter)

命令行解释器是一个单独的软件程序,它可以在用户和操作系统之间提供直接的通讯。非图形命令行解释器用户界面提供运行基于字符的应用程序和实用程序的环境。命令行解释器通过使用类似于 MS-DOS 命令解释程序 command.com 的各个字符来执行程序并在屏幕上显示其输出。Windows 服务器操作系统(NT)命令行解释器使用命令解释程序 cmd.exe(该程序加载应用程序并指示应用程序之间的信息流动)将用户输入转换为操作系统可理解的形式。

命令提示符(Command Prompt)

1、命令行解释器cmd.exe的快捷方式,它可以打开一个CMD窗口,一般位于开始菜单的“附件”中;
2、命令行中输入每条命令前的提示文字,通常为当前所在路径信息,可以通过环境变量PROMPT来修改;

外壳/界面(Shell/Interface)

操作系统或其他系统中负责实现用户与系统内核交互的程序或模块。典型地,资源浏览器(explorer.exe)和命令行解释器(cmd.exe)都是Windows系统的外壳,前者是属于图形化界面(Graphic User Interface, GUI),后者则是命令行界面(Command Line Interface, CLI)。

控制台(Console)

1、对系统进行集约化控制和参数配置的环境。例如,图形界面的控制台有“微软管理控制台(Microsoft Management Console,MMC)”,命令行界面的有“命令行解释器(cmd)”和“微软管理规范命令行(wmic)”。
2、命令行环境下的输入输出设备,代号为con,它通常可以看作是键盘和屏幕的组合。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多