中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » 其它操作系统综合讨论区 » [原创]WindowsXP中的内部命令
作者:
标题: [原创]WindowsXP中的内部命令 上一主题 | 下一主题
qzwqzw
银牌会员

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『楼 主』:  [原创]WindowsXP中的内部命令

cmd内部命令(49个)

字母序排列
ASSOC BREAK CALL CD CHDIR CLS CMDEXTVERSION COLOR COPY DATE DEFINED DEL DIR DPATH ECHO ENDLOCAL ERASE ERRORLEVEL EXIST EXIT FOR FTYPE GOTO IF KEYS MD MKDIR MOVE NOT PATH PAUSE POPD PROMPT PUSHD RD REM REN RENAME RMDIR SET SETLOCAL SHIFT START TIME TITLE TYPE VER VERIFY VOL

命令表排列
DPATH CALL CD COLOR TITLE CHDIR CLS CMDEXTVERSION DEFINED COPY PATH PROMPT PUSHD POPD ASSOC FTYPE DATE DEL DIR ECHO ENDLOCAL ERASE ERRORLEVEL EXIT EXIST BREAK FOR GOTO IF KEYS MKDIR MD NOT PAUSE RD REM MOVE RENAME REN RMDIR SET SETLOCAL SHIFT START TIME TYPE VERIFY VER VOL

command内部命令(40个)

字母序排列
BREAK CALL CD CHCP CHDIR CLS COPY CTTY DATE DEL DIR ECHO ERASE ERRORLEVELF EXIST EXIT FOR GOTO IF LH LOADHIGH MD MKDIR NOT PATH PAUSE PROMPT RD REM REN RENAME RMDIR SET SHIFT TIME TRUENAME TYPE VER VERIFY VOL

命令表排列
NOT ERRORLEVELF EXIST DIR CALL CHCP RENAME REN ERASE DEL TYPE REM COPY PAUSE DATE TIME VER VOL CD CHDIR MD MKDIR RD RMDIR BREAK VERIFY SET PROMPT PATH EXIT CTTY ECHO GOTO SHIFT IF FOR CLS TRUENAME LOADHIGH LH

别名命令
CD CHDIR
DEL ERASE
LOADHIGH LH
MD MKDIR
RD RMDIR
RENAME REN

   此帖被 +8 点积分      点击查看详情   
评分人:【 fujianabc 分数: +8  时间:2010-4-29 10:45


2010-4-28 17:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 2 楼』:  

内部命令也有很多奇怪的地方

首先内部命令在cmd和command中的入口
并不是按照字母顺序排列的
否则顶楼也不会有字母序和命令表两种排列方式
也不是命令的出现的先后顺序
或者命令的功能分类等排列的
甚至cmd和command的排序都是不一样的
也就是说同是一家产品
却采用了不一样的排列规则

其次类似CMDEXTVERSION EXIST DEFINED NOT ERRORLEVEL等
IF命令的关键词也被列为同IF一个级别的命令
而ELSE IN DO等关键词则未出现在其中
这种CMD的处理模式很值得我们思考
同时也有助于我们理解某些语句内部变量延迟的用法

再次COMMAND中的某些内部命令是无效的
即使是在COMMAND自己的命令Shell中
比如truename loadhigh lh等命令
执行时报命令无法识别的错误
因为这些COMMAND中的命令在CMD中没有入口
所以可以判断COMMAND完全是徒有其表的一副空架子
内核则基本上被NTVDM和CMD替代了
执行16位程序时借用了NTVDM的资源
执行32位程序甚至大多数内部命令时又借用了CMD的资源
比如在command中执行一个比较长时间的dir
此时打开任务管理器就可以发现cmd的身影
而经过进程跟踪可以发现command执行诸如dir copy等这些内部命令
都是通过简单的“cmd /c 命令行”的形式把包袱甩给了cmd
所以说COMMAND只是一个“入口程序”完全不为过

最后说一说从dos到win9x再到win2k,winxp
很多内部命令发生了变化
包括原来不是内部命令的成了内部命令(比如move)
原来是内部命令的现在被排除在外(比如chcp)
有很多内部命令从无到有(比如setlocal/endlocal,pushd/popd)
也有很多内部命令从有化无(比如ctty,loadhigh)
更多的内部命令功能特性发生变化
如dir、cd之流只是锦上添花增加了一些开关和参数
而for、if之辈则是大动干戈cmd美其名曰命令扩展
甚而像break之类更是脱胎换骨重新做命令
最可叹append之族愣是移花接木做了个双面命令
内部命令转行作外部命令(有append.exe为证)
竟然还在cmd内部留了个卧底(有dpath为证)
虽然windows在官方文档中留了一个命令变迁表(ntcmds.chm::/dos_diffs.htm)
可也是半遮半露浅尝辄止欲语还休
直让人感叹“不识命令真面目,只缘身在cmd中”啊!

2010-4-28 17:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: