中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » :+ 在DOS命令中的妙用(不适用NT系列的命令提示符 )
作者:
标题: :+ 在DOS命令中的妙用(不适用NT系列的命令提示符 ) 上一主题 | 下一主题
bagpipe
银牌会员

DOS联盟捡破烂的


积分 1144
发帖 425
注册 2005-10-20
来自 北京
状态 离线
『楼 主』:  :+ 在DOS命令中的妙用(不适用NT系列的命令提示符 )

说真的,这篇文章本身不上转上去的,因为现在大家基本上用纯DOS的毕竟是少数,这篇文章是很早在网上找的,没有经过实验,希望各位有条件的朋友告诉我一下结果就可以了

    当你在DOS提示符C:\下输入+PATH这个命令时,你认为结果会如何呢?是Bad command or filename呢?还是显示出路径呢?你可能说是前者,也可能说是后者,但你一定不会想到它的结果是莫名其妙把路径改成Path =H,可事实正是这样,这是我一次上机的一个+PATH命令误操作的结果。在排除了病毒作怪的原因后,仔细探索,竟然发现这个“+”起了非同寻常的作用DOS的使用。DOS的命令解释器COMMAND.COM竟把+PATH这个命令当成PATH=H来执行了。由于PATH是DOS的内部命令,于是想到DOS的其它内部命令是否也有类似的现象,逐个一试,如下的结果令人叫绝。

当你在提示符下输入+MD这个命令时,它在当前目录下会建立一个名为D的子目录,+CD便可进入这个子目录,再回到上级目录,输入+RD就可删除这个D目录(假设这个目录下你没有新子目录或文件),注意到H和D正好分别是PATH和MD,CD,RD的最后一个字母,于是输入+MKDIR,它又建立了一个R子目录,+CHDIR和+RMDIR也分别能进入和删除R子目录。于是恍然大悟,原来DOS在处理内部命令前加一个“+”的时候,都把命令的最后一个字母当作命令选项。

既然DOS有这个功能,那么下列这些命令的结果是理所当然的了。

+DIR跟DIR R的作用一样,当然+DIR,(注意这个“,”不能丢)这个命令不会把隐藏的R文件或子目录放过的。

+COPY L能把一个名为Y的文件复制一份并命名为L,+COPY CON能把这个文件显示在屏幕上。既然能对Y文件操作,那么当有一个Y.TXT文件时,怎么样实现这些操作呢?我们可以大胆地输入这样一个命令+COPY.TXT CON,结果怎么样?成功了!

+TYPE可以显示出当前目录下E文件的内容,当然E也可带TXT等扩展名。如+TYPE.TXT MORE。

这样,这个“+”的功能又得到了扩展,我们可以这样定义这类特殊的命令格式:

+内部命令〖适当的分隔符〗〖适当的字符串〗〖必要的命令选项〗。分隔符因命令的不同而异,如PATH可以接受“〖”、“〗”、“/”“\”、“:”、“;”和“.”等这些字符,而不能接受“{”、“}”、“<”、“>”和“,”等字符。例如,我们可以这样定义路径:+PATH;C:\DOS;C:\UCDOS;C:\WINDOWS,它的结果会产生PATH=H;C:\DOS;C:\UCDOS; C:\WINDOWS。

有几个特殊的命令,如DEL(或DELETE,ERASE)和REN(或RENAME),当在它们前面加上一个“+”时,它们分别把L(或E),N(或E)当作子目录而不当作文件来对待。+DEL命令的作用是在确认后删除当前目录下L子目录内的所有文件,也可以部分地删除文件,如+DEL \*.TXT,若L子目录不存在(它不会去理会当前目录下是否有L文件),则显示Path not found,类似的,REN(或RENAME)只能对N(或E)子目录下的一个指定文件改名,而不能对当前目录下的N(或E)文件改名,如+REN /A.WPS B.WPS。

除了DOS的这些文件操作命令之外,还有一类命令如:BREAK,DATE,TIME,VER,VOL等,在它们之前加一个“+”也可以使命令执行,但似乎没有多大意义。如输入+BREAK时显示Must specify ON or OFF,因为它把这个命令当作BREAK=K来执行了。当输入+DATE时则显示如下:Invalid,然后显示Enter new date,它把E当做你输入的新日期了!当输入+VOL和+VER也会出现相应的错误。

还有一个特殊的命令CLS,因CLS和CLS S的执行结果是一样的,所以+CLS也能清屏,只是稍显画蛇添足而已。

既然在DOS的内部命令前面加一个“+”能起到如此的作用,那么其它符号呢?经过我试验,发现冒号(“:”)也能起到同样的作用,即它也能加在DOS的内部命令前面使命令的最后一个字符作为命令参数。以上所有命令中的“+”均可以被“:”代替,这里不再赘述。

其实有时在DOS的命令中加上一两个符号起到非同寻常的作用,如DIR,(显示隐藏的文件和子目录)和ATTRIB,(取消当前目录下所有文件的所有属性,注意:这两个“,”不能丢)等,如果上机时稍微留心,不难发现DOS的这些秘密。

   此帖被 +4 点积分        点击查看详情   


2006-3-4 13:25
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
henrya2
中级用户





积分 486
发帖 171
注册 2006-2-12
状态 离线
『第 2 楼』:  

太棒了,谢谢分享。

[ Last edited by henrya2 on 2006-3-4 at 17:29 ]



Those who do not study the past are condemned to repeat it
2006-3-4 13:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
taoty
中级用户

传说中的菜鸟



积分 275
发帖 112
注册 2005-4-22
状态 离线
『第 3 楼』:  

真是太历害了。

2006-3-7 23:22
查看资料  发送邮件  发短消息 网志  OICQ (356807070)  编辑帖子  回复  引用回复
gmx
新手上路





积分 12
发帖 6
注册 2006-3-20
来自 郑州
状态 离线
『第 4 楼』:  

于微妙中见精神!

2006-4-5 17:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: