为什么 cmd DIR 搜索包括以搜索到的 3 个字母开头但随后不同的文件?

Why does cmd DIR search include files that start with the 3 searched letters but then differ?

如果我在一个目录中有两个文件,test.protest.properties,并且我 运行 dir /s *.pro 查找所有扩展名为 .pro 的文件,它会列出这两个文件。但是,当我 运行 dir /s *.pr 时,它都没有列出。为什么搜索三个字母的文件扩展名会列出扩展名以三个字母开头的文件?我如何使用 dir 仅搜索 .pro 文件?

命令 DIR 让文件系统搜索与通配符模式 *.pro 匹配的文件系统条目(文件名、目录名、重分析点(链接))长名称或简称 8.3 名称上的短名称管理也为当前驱动器的文件系统启用。

test.pro的短文件名是TEST.PRO
test.properties 的短文件名是 TEST~1.PRO.

因此通配符模式 *.pro 匹配 test.proTEST~1.PRO 显示为长文件名 test.properties.

通配符模式 *.pr 与两个文件名不匹配,因为文件扩展名分别是 pro properties 而不仅仅是 pr。通配符模式 *.pr? 还会找到文件名 test.proTEST~1.PRO 显示为长文件名 test.properties.

可以使用%SystemRoot%\System32\where.exe /R . *.pro在当前目录及其所有子目录中递归查找文件扩展名为.pro的文件不匹配以pro开头的较长文件扩展名的文件名,因为of WHERE 仅对长文件名应用通配符模式。

DIRFOR 使用 Windows 文件 I/O 直接使用通配符模式搜索的功能*.pro 用于合适的文件系统条目。 WHERE使用Windows文件I/O函数搜索*得到所有文件系统条目的长名称列表,然后应用通配符文件系统返回的每个字符串上的模式本身。出于这个原因,通配符模式 *.pro returns 的使用仅在 test.pro 而不是 test.properties 上使用 WHERE .