C++如何统计文件夹下文件个数

如题所述

dir /b | find /v /c "$$$$" > 1.log

该结果统计当前目录下的文件和目录数。

如果只需要文件,使用

dir /b /a-d | find /v /c "$$$$" >1.log
--
※ 来源:·水木社区 newsmth.net·[FROM: 125.46.17.*]

今天去水木看到的.果然强.我来解释一下意思

dir /b 使用空格式(没有标题信息或摘要)。

dir /a-d /a是显示具有指定属性的文件。d是目录,-d就是去掉目录

| 通道符,把dir /b的输出当中后面find的输入

find

/v 显示所有未包含指定字符串的行。

/c 仅显示包含字符串的行数

"$$$$" 特殊字符,一般文件中都没这个字符,不过可以用$$$$来命名文件夹,所以我建议用冒号,这个不能当作文件夹或者文件的名字.

> 输出到

1.log 文件

这个比较好:dir /b | find /v /c ":" > 1.log

=============================

扩展:

包含子目录:

C++代码
tree /F | find /c "." // 带点的文件
tree /F | find /v /c "/" // /是文件命名时禁止使用的,统计全部文件
Linux 下:

C++代码
# ls -l * |grep "^-"|wc -l // to count files
# ls -l * |grep "^d"|wc -l // to count dir
Linux,包括子目录

C++代码
# ls -lR * |grep "^-"|wc -l // to count files
# ls -lR * |grep "^d"|wc -l // to count dir
==================================================

CSDN相关解释:

int count;

int CGetFileCountDlg::GetFileCount(CString szPath)
{
count = 0;
Recurse(szPath);
return count;
}
void CGetFileCountDlg::Recurse(LPCTSTR pstr)
{
CFileFind finder;

// build a string with wildcards
CString strWildcard(pstr);
strWildcard += _T("\\*.*");

// start working for files
BOOL bWorking = finder.FindFile(strWildcard);

while (bWorking)
{
bWorking = finder.FindNextFile();

if (finder.IsDots()) //判断是否是文件
continue;
if(!finder.IsDirectory())
{
count ++;
}
// if it's a directory, recursively search it
if (finder.IsDirectory()) //判断是否是文件夹 //路径
{
CString str = finder.GetFilePath();
Recurse(str);
}

}

finder.Close();
}

count 就是目录下文件的个数

----------------------------------------------------------------------------

SDK的

HANDLE hFind;
WIN32_FIND_DATA dataFind;
BOOL bMoreFiles=TRUE;
int iCount=0;//统计文件数的变量

//m_strDir就是你要指定的路径
hFind=FindFirstFile(m_strDir+"\*.*",&dataFind);//找到路径中所有文件

//遍历路径中所有文件
while(hFind!=INVALID_HANDLE_VALUE&&bMoreFiles==TRUE)
{
if(dataFind.dwFileAttributes!=FILE_ATTRIBUTE_DIRECTORY)//判断是否是文件
{
iCount++;
}
bMoreFiles=FindNextFile(hFind,&dataFind);
}
FindClose(hFind);
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-09-24
int count;

int
CGetFileCountDlg::GetFileCount(CString szPath)
{
count
= 0;
Recurse(szPath);
return count;
}
void CGetFileCountDlg::Recurse(LPCTSTR pstr)
{
CFileFind finder;

// build a string with
wildcards
CString strWildcard(pstr);
strWildcard +=
_T("\\*.*");

// start working for files
BOOL bWorking = finder.FindFile(strWildcard);

while (bWorking)
{
bWorking =
finder.FindNextFile();

if (finder.IsDots())
//判断是否是文件
continue;
if(!finder.IsDirectory())
{
count ++;
}
// if it's a
directory, recursively search it
if (finder.IsDirectory())
//判断是否是文件夹 //路径
{
CString str =
finder.GetFilePath();
Recurse(str);
}

}

finder.Close();
}

count 就是目录下文件的个数

SDK的

HANDLE hFind;
WIN32_FIND_DATA dataFind;
BOOL bMoreFiles=TRUE;
int iCount=0;//统计文件数的变量

//m_strDir就是你要指定的路径
hFind=FindFirstFile(m_strDir+"\*.*",&dataFind);//找到路径中所有文件

//遍历路径中所有文件
while(hFind!=INVALID_HANDLE_VALUE&&bMoreFiles==TRUE)
{
if(dataFind.dwFileAttributes!=FILE_ATTRIBUTE_DIRECTORY)//判断是否是文件
{
iCount++;
}
bMoreFiles=FindNextFile(hFind,&dataFind);
}
FindClose(hFind);
第2个回答  推荐于2017-12-15
就是不能确定文件夹内文件数目,所以在第一句加了个set,每次要改数字,非常只是要得到某文件夹下的文件数的话我想可以使用dir命令来实现假设目录为C:\\,luRWQh本回答被网友采纳
第3个回答  2012-05-29
没听懂什么意思啊

C++如何统计文件夹下文件个数
C++如何统计文件夹下文件个数 50 hyz_w | 浏览4075 次 |举报 我有更好的答案推荐于2016-09-24 23:59:47 最佳答案 int count;int CGetFileCountDlg::GetFileCount(CString szPath){count = 0;Recurse(szPath);return count;}void CGetFileCountDlg::Recurse(LPCTSTR pstr){CFileFind finder;\/\/ build ...

C\/C++编程遍历文件夹,统计当前文件个数,输出文件名
void searchFileInDirectroy( const string& dir, vector<string>& outList ){ WIN32_FIND_DATA findData;HANDLE hHandle;string filePathName;string fullPathName;filePathName = dir;filePathName += "\\\\*.*";hHandle = FindFirstFile( filePathName.c_str(), &findData );if( INVALID_HANDLE_V...

C++怎么获取一个文件夹中jpg文件的数量 只要数量 用于后面的循环_百 ...
正规一点的做法,就是打开文件节点,遍历每个节点,判断扩展名,如果为JPG则累加,最终得到总数量 偏门一点,但是更简单的做法就是调用 用system调用dir *.jpg 文件夹路径 > tmp.TXT 然后打开tmp.TXT,读文件,计算行数,再减掉dir结尾统计的行数(这个是固定的,你打一下就知道了)得到的就是JPG总数...

Windows C++ 获取当前文件夹下有几个文件
1、在linux平台,可采用目录操作函数,读取当前目录下的文件 #include #include \/\/windows开发工具没有这个头文件 #include #include main() { DIR * dir; struct dirent * ptr; char file_list[100][40]; int i=0; dir = opendir("\/etc\/rc.d");...

C\/C++编程遍历文件夹,统计当前文件个数,输出文件名
标准C是没有目录相关的函数的 CFree是16位的吧,那就更不用想了.貌似只能内嵌汇编使用dos中断来完成.还是换编译器吧devcpp codeblock vc8 之类的都很好 【cmail】:这个要用到windows API HANDLE FindFirstFile(LPCTSTR lpFileName,LPWIN32_FIND_DATA lpFindFileData );BOOL FindNextFile(HANDLE h...

windows下使用C\/C++怎么遍历目录并读取目录下的文件列表
{ return; } do { \/\/判断文件的属性是文件夹还是文件 cout << fileInfo.name << (fileInfo.attrib&_A_SUBDIR? "[folder]":"[file]") << endl; } while (_findnext(hFile, &fileInfo) == 0); _findclose(hFile); return;}int main(){ \/\/要遍历的目录 string path="...

怎么用C\\C++实现对 一个文件夹所有文件的遍历
CFileFind finder;BOOL bWorking = finder.FindFile(%%1+"\\\\*.*");while (bWorking){ bWorking = finder.FindNextFile();if (finder.IsDirectory()){ \/\/finder.GetFilePath();所有文件夹 } else if(finder.IsDots()){} else { \/\/finder.GetFilePath();所有文件 } } ...

c++获取目录下所有文件方法
若只要 当前目录下的,不要子目录下的文件 用 system("dir >> t.lis"); 即可。你可查看 DOS 命令 dir 的帮助文件,了解 其它 列文件的选项。linux 和 unix 系统 用 ls 命令 替代 dir, 也可转向输出到文件里。完整c++程序如下:include<iostream> using namespace std;include <stdio.h> ...

C++怎么读取某文件夹中所有的.txt文件
\/\/dirpath为你要查找的文件件绝对路径,如txt在D盘文件夹名为1的情况下,即输入:\/\/std::string = "D:\\\\1\\\\";\/\/std::vector<std::string> filepaths\/\/为所有txt的文件名称,这是输出参数 \/\/std::string regular_expression_input = "*.txt";\/\/你写一个主函数即可使用。int get_filename...

急~!!!如何用C\/C++ 读取文件夹中所有文件(如.csv文件)
long hFile;if( (hFile = _findfirst( LPCTSTR(pathWild), &c_file )) == -1L){ MessageBox("选择目录下并无csv文件,请确认");_findclose(hFile);return;} else { do { \/\/这里就是文件名,加上之前的路径就是完整路径了 CString strFileName = c_file.name;} while (_findnext(h...

相似回答