|
|
发表于 2011-12-19 22:33:09
|
显示全部楼层
讨论嘛我帮不上忙来凑个热闹,我认为现在批处理中用的命令本来是在DOS命令基础上加以功能扩展而来的,想规则地去定义 . * 不容易,举两例“添乱的题外话”:
1 当初DOS文件名实行"8.3"制,*.*中两*代表字符的数目也服从这规则,但是有人取名时超过了这个数呢,它也“好心兼容”,但是识别时超过部分忽略不计,至今仍可见这种踪影,比如
DIR *.htm 按说仅主名有通配符,并不是DIR *.htm*
但是 *.html 等只要后缀名(DOS中是称扩展名)中前3字符对上了的文件照样会列出来——延用了“8.3”时期规矩,要是表达后缀名只列两个字符之后不带* 却是规则地只匹配符合这两个字符的后缀,可能你会说这与 .或* 的定义无关?
2 早期的DOS较低版本中,点.除作为主名和扩展名的分隔符外,还定义表示当前目录(而连续两点..表上一级目录,且在DIR命令中可见到它们),此外好象没别的定义,而表达所有文件是需要用 *.* 的。
我的印象大约是DOS6.2 (这个版本号记不准确) 某些命令中可以用 . 表示 *.* 的意思了,新增个deltree外部命令时还强调说明,这个命令由于破坏性大,出于慎重现在才推出......也难怪,之前磁盘容量太小,3.5软盘都还是后来才有的
我的意思是,把DOS命令的功能逐步改造与现在系统兼容或说现在的命令仿原来的命令,且每次变更扩展都还或多或少考虑与前一次的兼容性,才形成了难以简捷定义如 . * 等符号的用法,更不要说还会用在不同场合有不同需求,当然肯定是可以准确地归纳列举式地定义它的用法。呵呵,就算有很全的答案凭我这笨脑子也记不住,硬是要用过几次看能否记得一点——主要是本人记性太差! |
|