MFC中遍历当前目录下的文件和文件夹,然后将所有找到的文件夹的名字提取出来

情况是这样的,当前目录now下存放内容如下:文件夹A,B,C,D。。。。具体数量未知,以及我们的MFC生成的执行文件setup.exe,其中每个文件夹里面都有一个conf... 情况是这样的,当前目录now下存放内容如下:文件夹A,B,C,D。。。。具体数量未知,以及我们的MFC生成的执行文件setup.exe,其中每个文件夹里面都有一个config.ini和一个文件夹ZZ。现在我无论把now这个文件夹放在哪里,执行里面的setup.exe,都能提取到A,B,C,D....这些目录的名字。如何实现,只需要把提取目录这部分代码给我就行。如果用到一些函数,请给出包含它们的头文件。谢谢~不要把其他知道里面的代码拷给我,findfile()后面带的参数我看不懂。在线等!!! 展开
 我来答
越风78
2011-11-10 · TA获得超过157个赞
知道答主
回答量:85
采纳率:0%
帮助的人:53万
展开全部
把以下代码放到Win32控制台运行,亲测可用:

#include <windows.h>
#define FILEILTER "*.*" //查找条件,例如查找.exe格式的那么就用*.exe,当然也可以直接用setup.exe
#include "iostream.h"
#include "stdio.h"

BOOL IsRoot(LPCTSTR lpszPath)
{
TCHAR szRoot[4];
wsprintf(szRoot, "%c:\\", lpszPath[0]);
return (lstrcmp(szRoot, lpszPath) == 0);
}

void FindInAll(LPCTSTR lpszPath)
{
TCHAR szFind[MAX_PATH];
lstrcpy(szFind, lpszPath);
if (!IsRoot(szFind))
lstrcat(szFind, "\\");
lstrcat(szFind, FILEILTER); // 找所有文件
WIN32_FIND_DATA wfd;
HANDLE hFind = FindFirstFile(szFind, &wfd);
if (hFind == INVALID_HANDLE_VALUE) // 如果没有找到或查找失败
return;

do
{
if (wfd.cFileName[0] == '.')
continue; // 过滤这两个目录
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
else
{
wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
FindInAll(szFile); // 如果找到的是目录,则进入此目录进行递归
}
}
else
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
{
wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
}
else
{
wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
printf("%s\n",szFile);
}
// 对文件进行操作
}
} while (FindNextFile(hFind, &wfd));
FindClose(hFind); // 关闭查找句柄

}
int main(int argc, char* argv[])
{
FindInAll("E:"); //这里设置目录为E:,请根据需要更改
return 0;
}
伍少秋
2013-01-30
知道答主
回答量:18
采纳率:0%
帮助的人:4.3万
展开全部
楼主怎么做的,能贴出来看看吗。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shen_yuanssss
2012-12-26
知道答主
回答量:31
采纳率:0%
帮助的人:4.7万
展开全部
  抗议严重抗议强烈建议楼主在问题解决后把具体的解决方法公布出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式