中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » (讨论)MSDOS与COMMAND/CMD的兼容性!
作者:
标题: (讨论)MSDOS与COMMAND/CMD的兼容性! 上一主题 | 下一主题
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『楼 主』:  (讨论)MSDOS与COMMAND/CMD的兼容性!



  Quote:
不是说MS-DOS也能被CMD兼容吗?
为什么我在打入压缩硬盘空间的命令 dblspace(Double Space)后不象书上讲的那样会出现一个DoubleSpace的主屏幕,而是说"dblspace"不是内部或外部命令,也不是可运行的程序和批处理文件,难道是该命令不可以在CMD下执行吗?类似还有很多命令也是这样,望帮讲讲怎么弄?怎么才能事业能够那些命令?

  以上内容,是一位初学DOS的网友通过 Email 向我提出的问题,我仔细思索了一下,觉得有很多值得讨论的东西,所以将问答均转贴于此。

      我想,首先需要指出的一个原理是:“任何两个系统都不能做到完全兼容”。这不仅适用于计算机领域,也同样适用于生产生活中的其它领域。

      因为而 MSDOS 与 Windows 同属微软公司一家设计编写,故而在技术上会有相当的沿承,所以必然会存在很多相同、相似的地方,尤其是在一些功能应用的方式上(比如命令行和批处理),这是所谓“兼容性”产生的根源之一。但是,同时由于技术是不断发展变迁的(这种变迁大部分都是具有进步性的,但也有很多是其它因素作用下的技术上的退步),所以也注定不同时期、不同环境因不同需求而产生的产品,必然存在许许多多的差异,而这种差异会影响已习惯老产品的用户的使用,所以产品生产者会在新产品中相当程度地采用与原产品相同的操控方式和反馈界面(即所谓接口“Interface”),这是所谓“兼容性”产生的根源之二。

      而 MSDOS 与 Windows 的命令行(在Win9x下称“MS-DOS方式”,入口程序为 command.com;在WinNT’s 下称“命令提示符”,入口程序为 cmd.exe) 虽然同属命令行应用环境,但是毕竟是基于两个技术上存在相当差异的平台,所以必然会存在兼容性上的问题,其最大的问题便表现在对外部程序的支持上。所以,在 WinXP 的帮助文档(文后附引原文)中,也只能声称“Windows XP 保留并增强了几乎所有 MS-DOS 功能”。而 dblspace 则也属于“目前不支持” 的命令,这表面上是源于 dblspace 是个外部命令,需要可执行程序和其它数据文件的支持,而在 WinXP 上已不附带这些文件;而根源上则是因为 XP 采用比 DOS 的 FAT16 更为复杂的 NTFS 文件系统(当然还包括其它一些硬盘读写功能和实现上的改变),其压缩磁盘的功能已不可能由原来的 dblspace 来实现,所以即使将 DOS 下与 dblspace 有关的所有文件拷入 XP 下,也无法正常运行,而在 WinXP 下,压缩硬盘功能放在了每个磁盘的右键菜单中的 “属性-常规” 中,而且仅用于 NTFS 分区。

      当然,其它的许多程序和命令,因为相同或类似的原因故而无法使用。

以下内容引自 Windows XP 帮助和支持中心 - 执行熟悉任务的新方法

  Quote:
执行熟悉任务的新方法
Windows XP 保留并增强了几乎所有 MS-DOS 功能。下面各表将作说明:

对 MS-DOS 命令的功能的更改。
在 Windows XP 中不再可用的 MS-DOS 命令。
在 Windows XP 64-Bit Edition 中不再可用的 MS-DOS 命令。
更改为 MS-DOS 命令

下表列出对 MS-DOS 命令的功能所进行的更改。

命令 已更改的功能
chcp 更改所有命令提示符窗口的代码页。
Diskcomp 不支持命令行选项 /1 和 /8。
diskperf 不再需要在服务器计算机上进行操作。但仍然可以使用 diskperf 进行远程管理。
Diskcopy 不支持命令行选项 /1。
doskey 可以用于所有接受缓冲输入的基于字符的程序。一系列增强的功能使 Doskey 得以增强。
format 仅支持 1.44 MB 软盘驱动器。不再支持 20.8 MB magneto-optical 驱动器。不再支持命令行选项 /b、/s、/u、/1、/4 和 /8。
label ^ 符号和 & 符号可在卷标签中使用。
mode 不支持 mode lptn[:][cols=c][lines=n] 和 mode lptn[:][c][,[n]] 语法。
print 不支持命令行选项 /b、/c、/m、/p、/q、/s、/t 和 /u。
prompt 新的字符组合允许您将 & 符号 ($a)、圆括号($c 和 $f)及空格 ($s) 添加到提示符。
recover 只恢复文件。
rmdir 新的 /s 命令行选项删除包含文件和子目录的目录。
sort 不需要 TEMP 环境变量。文件大小无限制。
xcopy 新的 /g 命令行选项创建解密的目标文件。

不可用的 MS-DOS 命令

以下 MS-DOS 命令在命令提示符中不可用。

命令 新过程或过时的原因
assign 目前不支持。
backup 目前不支持。
choice 目前不支持。
ctty 目前不支持。
dblspace 目前不支持。
deltree rmdir /s 命令删除包含文件和子目录的目录。有关 rmdir 命令的详细信息,请参阅 Rmdir。
dosshell 功能现在是固有的。
drvspace 目前不支持。
emm386 功能现在是固有的。
fasthelp 目前不支持。在命令提示符下使用 help 命令。有关 help 命令的详细信息,请参阅 Help。有关命令行工具的完整列表,请参阅命令行参考 A-Z。
fdisk 目前不支持。利用 diskpart 命令,可以管理磁盘、分区或卷。有关 diskpart 命令的详细信息,请参阅 Diskpart。
include 不支持 MS-DOS 子系统的多个配置。
interlnk 目前不支持。
intersrv 目前不支持。
join 增加分区大小和提高的文件系统就可以不需要连接驱动器。
memmaker 自动优化对 MS-DOS 子系统内存的使用。
menucolor 不支持 MS-DOS 子系统的多个配置。
menudefault 不支持 MS-DOS 子系统的多个配置。
menuitem 不支持 MS-DOS 子系统的多个配置。
mirror 目前不支持。
msav 目前不支持。
msbackup 将 ntbackup 命令用于包含磁带驱动器的计算机,或者将 xcopy 命令用于不包含磁带驱动器的计算机。有关 ntbackup 命令的详细信息,请参阅 Ntbackup。有关 xcopy 命令的详细信息,请参阅 xcopy。
mscdex 不需要配置 MS-DOS 子系统,即可使用光盘驱动器。Windows XP 为 MS-DOS 子系统提供对 CD-ROM 驱动器的访问。
msd 使用“系统信息”管理单元。要启动“系统信息”,单击“开始”,单击“运行”,然后键入 msinfo32。
numlock 目前不支持。
power 目前不支持。
restore 目前不支持。
scandisk 目前不支持。使用 chkdsk 命令,可以根据文件系统创建和显示磁盘状态报告。Chkdsk 也列出并纠正磁盘上的错误。有关 chkdsk 命令的详细信息,请参阅Chkdsk。
smartdrv 对 MS-DOS 子系统的缓存是自动进行的。
submenu 不支持 MS-DOS 子系统的多个配置。
sys Windows XP 不适合标准的 1.2 MB 或 1.44 MB 软盘。
undelete 目前不支持。
unformat 目前不支持。
vsafe 目前不支持。

MS-DOS 命令在 Windows XP 64-Bit Edition 上不再可用

下列 16 位 MS-DOS 子系统命令不再可用于 Window s XP 64-Bit Edition。

命令 功能
append 允许程序打开指定文件夹中的数据文件就象这些文件在当前文件夹中一样。  
debug 启动 Debug.exe,它是用于测试和调试 MS-DOS 可执行文件的程序。  
edit 启动 MS-DOS 编辑器,它可创建和更改 ASCII 文本文件。  
edlin 启动 Edlin.exe,它是用于创建和更改 ASCII 文件的、面向行的文本编辑器。
exe2bin 将 .exe(可执行文件)转换成二进制格式。
expand 展开一个或多个压缩文件。  
fastopen Windows XP 不使用该命令。使用它只是为了与 MS-DOS 文件兼容。  
forcedos 启动 MS-DOS 子系统中指定的程序。只有 Windows XP 不识别为 MS-DOS 程序的那些 MS-DOS 程序才必需此命令。
graphics 当正在使用彩色或图形适配器时,将某程序加载到内存,可以将屏幕上显示的内容打印到打印机上。  
loadfix 确保程序在第一个 64 KB 的常规内存以上加载,然后运行程序。  
Loadhigh (lh) 将一个程序加载到高端内存区域 (UMA)。将程序加载到 UMA 为其他程序在常规内存中留出更多的空间。  
mem 显示有关分配内存区域、可用内存区域和当前在 MS-DOS 子系统中加载进内存的程序信息。
nlsfunc 加载针对国家(地区)的信息。Windows XP 不使用该命令。使用它只是为了与 MS-DOS 文件兼容。

setver 设置 MS-DOS 子系统向程序报告的 MS-DOS 版本号。  
share Windows XP 不使用该命令。使用它只是为了与 MS-DOS 文件兼容。  

[ Last edited by willsort on 2005-11-16 at 20:27 ]



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-11-16 20:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
showpig
新手上路





积分 18
发帖 10
注册 2007-8-13
状态 离线
『第 2 楼』:  精彩

很精彩!兄的分析能力及毅力叫人赞叹……

2007-8-16 20:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: