最近在制作一个批处理的过程中发现一个很郁闷的问题,就是有些时候搜索到的结果不是我们想要的

关于CMD/DOS中的短文件名规则-LMLPHP

比如上图,我要搜索的文件时?ec*.*,也就是说我要搜索第二个字母是e,第三个字母是c的所有文件
而搜索到的结果前两个都正确,但是后面两个就错了,很不理解,最初以为是bat写的问题
后来发现直接在DOS写命令也是一样的,有很多完全不符合的文件,遂百度,才知道怎么回事

也就是说当使用*通配符后只按照短文件名搜索,而不按照原始长文件名来搜索
我输出了下短文件名后发现果然是这样的:

关于CMD/DOS中的短文件名规则-LMLPHP

如图所示可以看到?ec*.*确实匹配的短文件名,看了命令没有执行错误。
但是又一个问题出现了,为什么短文件名是VEXXXX~1这种形式?
接着百度,得到以下结果:

很明显目前的状况属于第三种情况,但是后面的4位16进制数据是怎么计算得到的还是不太清楚

网上对此解释也有很多,这里也就不再讨论,只是希望在使用过程中了解有这么个机制

会发生结果与预期不符,而不是程序设计错误即可

—— 原文发表于2012-3-11 08:57

05-11 15:39
查看更多