我尝试使用 FindFirstFile() 返回特定的 .xls 文件。然而,由于命名约定,它也会返回 .xlsx。可以在文件资源管理器中使用“*.xls”以仅返回 .xls 文件。这对函数有用吗
最佳答案
正如@Hans Passant 所说,您被对 8.3 MSDOS names 的遗留支持所困扰.
您的 LovelyTable.xlsx
还有一个辅助名称,例如 LOVELY~1.XLS
而这个辅助名称就是 FindFirstFile()/FindNextFile()
给你。避免此类结果的唯一可靠方法是重新检查返回给您的内容。
如果您不想更改应用程序,您还可以从卷中删除短名称并禁用它们的生成。您可以查看 fsutil命令(它的 8dot3name
子命令),但请注意,即使在现在,这也可能会破坏某些软件。 (例如软件认为它安装在C:\PROGRA~2\
下)
我认为 FindFirstFileEx()
可以过滤掉8.3的名字:
FindFirstFileEx(searchPattern, FindExInfoBasic, ...)
但它不能。感谢@RbMm 清除了这个问题。 FindExInfoBasic
仅避免填写WIN32_FIND_DATA
的cAlternateFileName
字段。您仍然会收到通过短名称发现的文件。
关于c++ - 是否可以为 FindFirstFile() 函数使用引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56631624/