我测试了使用mfc查找具有visual studio环境的目录下的所有文件夹。只需制作一个mfc dlg,添加一个按钮,粘贴下面的代码。唯一要给出的变量是" product_path"带有文件夹的目录,空文件夹就是名称,如123,或abc,或ABC。 测试: 测试1个名为123,456的文件夹。 结果:可以找到所有。 测试2个名为123,456的文件夹,ab。 结果:找不到文件夹名称ab。 测试3个名为123,ab,AB的文件夹。 结果:找不到文件夹名称AB。
/*vector_folder_name used to store found folders*/
vector<CString> vector_folder_name;
/*product_path directory with folders*/
CString product_path=_T("..\\ProductType");
//sprintf(product_path,"..\\%s","ProductType");
if (product_path.Right(1) != "\\")
{
product_path += _T("\\");
}
product_path += _T("*.*");
CFileFind ff;
BOOL ret = ff.FindFile(product_path);
while (ret)
{
ret = ff.FindNextFile();
if (ret != 0)
{
if (ff.IsDirectory() && !ff.IsDots())
{
//CString path = ff.GetFilePath();
CString folder_name = ff.GetFileName();
vector_folder_name.push_back(folder_name);
//TraverseDir(path, vec);
}
//else /*if(!ff.IsDirectory() && !ff.IsDots())*/
//{
// CString name = ff.GetFileName();
// CString path = ff.GetFilePath();
// vector_folder_name.push_back(path);
//}
}
}
//sort(vector_folder_name.begin(),vector_folder_name.end());
sort(vector_folder_name.begin(),vector_folder_name.end(),compare1);
ff.Close(); // do not foget close
答案 0 :(得分:2)
您的问题与大写或小写文件名完全无关,并且没有什么神奇的情况,但您的代码不正确。它也与=COUNTIFS(MID(A1:A6;1;9);"06-DEC-17")
函数
Possible to use COUNTIF with a function on the range's values?在找到的最后一个文件后返回compare1
,因此您的代码只会跳过找到的最后一个文件。
换句话说,如果FALSE
返回FindNextFile
,则不是错误,但这意味着您已在目录中获得 last 文件
这个(甚至更简单的)代码可以工作:
FALSE
我已删除您的已注明代码。