我试图用来FindFirstFile
检查模式后是否存在某些文件,但看起来通配符*
不能代表目录.
int main() { WIN32_FIND_DATAW findFileData; wchar_t path[] = LR"(.\*\*.txt)"; HANDLE hFind = FindFirstFileW(path, &findFileData); if(hFind != INVALID_HANDLE_VALUE) { do { printf("%S\n", findFileData.cFileName); } while (FindNextFileW(hFind, &findFileData)); } }
使用此树,不会打印任何内容:
. |- foo | |- some.txt | |- bar | |- another.txt
为什么这个限制?是否存在变通方法?
通配符仅允许在最终路径分隔符后的文件名部分中.该文件没有说明这一点.它说:
目录或路径以及文件名.文件名可以包含通配符,例如星号(*)或问号(?).
如果要搜索多个目录,则需要显式实现嵌套或递归迭代.