中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-13 21:33
中国DOS联盟论坛 » WinPE、PowerShell及其它命令行系统专区 » [原创]Win2000/XP中的命令行[06-05-22]
楼 主 [原创]Win2000/XP中的命令行[06-05-22] 发表于 2006-05-16 19:40 ·  中国 山西 临汾 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
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,它通常可以看作是键盘和屏幕的组合。


[ Last edited by willsort on 2006-5-22 at 15:03 ]
本帖最近评分记录 (共 7 条) 点击查看详情
评分人分数时间
redtek +2 2006-11-06 23:14
pengfei +6 2006-11-29 02:46
hxuan999 +2 2006-12-15 02:51
oilio +2 2007-03-14 09:39
Billunique +2 2007-03-28 00:53
crocodile +1 2007-08-31 06:12
Kinglion +25 2009-06-30 03:14
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2 发表于 2006-05-16 21:43 ·  IANA 局域网IP(Private-Use)
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
UID 42173
性别 男
状态 离线
好!!!

建议写入wiki

[ Last edited by electronixtar on 2006-5-16 at 21:46 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
+1 2010-11-12 15:29
3 发表于 2006-05-22 12:23 ·  中国 上海 黄浦区 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
UID 35785
性别 男
状态 离线
写的好,尽管我对这种假 DOS 从不感兴趣,除非实际碰到。

另外更正一个小错误:应该是 Interpreter ,而不是 Interupter(Interrupter?)
4 发表于 2006-05-22 14:30 ·  中国 山西 大同 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
UID 19
性别 男
状态 离线
Re DOSforever:

感谢兄的指正,已对原文做出更新。此外的更新内容包括某些节段次序的调整、WMIC一段文字的补充和CMD和COMMAND简写的使用。

[ Last edited by willsort on 2006-5-22 at 15:04 ]
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
5 发表于 2006-06-12 09:07 ·  中国 广东 汕尾 电信
初级用户
积分 22
发帖 8
注册 2005-08-28 09:41
UID 42020
状态 离线
喜欢这类比较系统底层的文章。
6 发表于 2006-08-05 23:15 ·  中国 河南 郑州 中移铁通
新手上路
积分 19
发帖 10
注册 2006-02-26 21:10
UID 51004
状态 离线
多谢版主的劳动。
7 发表于 2006-08-06 21:07 ·  中国 广东 深圳 龙岗区 电信
高级用户
★★★
积分 793
发帖 312
注册 2004-09-02 00:00
UID 31104
性别 男
状态 离线
学习一下。
8 发表于 2006-10-30 01:16 ·  中国 浙江 台州 电信
新手上路
积分 14
发帖 6
注册 2006-10-25 02:18
UID 68134
性别 男
状态 离线

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


那如何才能使command支持doskey命令呢?
9 发表于 2006-10-30 02:03 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
UID 42173
性别 男
状态 离线
下载一个第三方的增强版 doskey 就行了,还支持 tab 列举目录呢

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
10 发表于 2006-10-30 11:46 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线

  恩,写得非常的好,希望楼主多写一些这样通俗易懂,篇幅不长,大家都看的懂的好文章给我们新手朋友看.呵呵..谢谢楼主...
11 发表于 2006-11-06 02:26 ·  中国 四川 绵阳 电信
高级用户
★★
积分 587
发帖 282
注册 2006-04-10 03:40
UID 53599
性别 男
状态 离线
在CMD窗口中输入 Help 回车都有的
12 发表于 2006-11-06 06:37 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
UID 59080
状态 离线
Originally posted by xuantian at 2006-11-6 02:26:
在CMD窗口中输入 Help 回车都有的


  汗一个先。。

  用这个help看到的只是一些基本命令的简单介绍,况且CMD的帮助有的很难理解,要看其它的资料才会慢慢的懂。
13 发表于 2006-11-16 05:30 ·  中国 广东 广州 电信
初级用户
积分 88
发帖 45
注册 2006-11-03 02:41
UID 69367
性别 男
状态 离线
好贴,顶
14 发表于 2006-11-19 08:38 ·  中国 山西 太原 联通
新手上路
积分 10
发帖 5
注册 2005-11-24 16:21
UID 45846
状态 离线
谢谢!!
15 发表于 2006-11-28 00:15 ·  中国 山东 青岛 联通
新手上路
积分 15
发帖 7
注册 2006-11-25 03:46
UID 71653
性别 男
状态 离线
写的好,这样的文章就适合我这样的新手,很是感谢。希望楼主多写点这样通俗易懂的好文章。呵呵,谢谢啦。
论坛跳转: