是否可以对FindFirstFile()函数使用引号?

时间:2019-06-17 12:46:00

标签: c++ winapi

我尝试使用FindFirstFile()返回特定的.xls文件。但是,由于命名约定,它还会返回.xlsx。在文件资源管理器中可以使用“ * .xls”仅返回.xls文件。这对功能有用吗

2 个答案:

答案 0 :(得分:4)

就像@Hans Passant所说的那样,您被8.3 MSDOS names的旧支持所困扰。

您的LovelyTable.xlsx还有一个辅助名称,类似于LOVELY~1.XLS,而这个FindFirstFile()/FindNextFile()的名字就是您的名字。

似乎FindFirstFileEx()可以过滤出8.3个名称:

FindFirstFileEx(searchPattern, FindExInfoBasic, ...)

如果您不想更改应用程序,则还可以从卷中删除短名称并禁用其生成。您可以检查fsutil命令(它的8dot3name子命令),但是请注意,即使在今天,这也可能会破坏某些软件。 (例如,认为它安装在C:\PROGRA~2\下的软件)

答案 1 :(得分:0)

这是由于支持短8.3文件名的结果。您的.xlsx文件将以.xls扩展名命名。就是匹配的短文件名。

虽然您可以关闭对您控制的驱动器的短文件名的支持,但是该选项对于不受控制的计算机不切实际。因此,实际上,您将必须应用自己的过滤器。