我尝试使用FindFirstFile()返回特定的.xls文件。但是,由于命名约定,它还会返回.xlsx。在文件资源管理器中可以使用“ * .xls”仅返回.xls文件。这对功能有用吗
答案 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扩展名命名。就是匹配的短文件名。
虽然您可以关闭对您控制的驱动器的短文件名的支持,但是该选项对于不受控制的计算机不切实际。因此,实际上,您将必须应用自己的过滤器。