cmd.exe中*.*通配符解析逻辑与DIR命令表现疑问
为什么执行
DIR *.*会显示不含.的文件夹和含.的文件? 这是因为Windows CMD的通配符规则延续了DOS时期的兼容逻辑,和你理解的“严格通配符匹配”不是一回事:
- 针对文件:
*.*在CMD里被特殊处理成“所有文件”——不管文件名里有没有.。早年间DOS只有8.3格式的文件名(主名最多8字符+扩展名最多3字符),*.*就是用来指代所有文件的,这个老行为被一直保留到现在。 - 针对文件夹:CMD的
DIR命令处理通配符时,会把不含.的文件夹也归到*.*的匹配结果里。因为DOS里文件夹没有扩展名的概念,系统默认把文件夹名看作“没有扩展名的文件”,所以*.*会匹配这类对象。
说白了,CMD里的*.*不是严格匹配“名称包含.”的对象,而是历史兼容带来的“所有文件+所有文件夹”的快捷写法。
内容的提问来源于stack exchange,提问作者zesy
相关产品推荐
相关产品推荐

