汇总文件夹及其文件数目信息到excel的Matlab程序

我需要统计这样分布文件夹:

01#下的文件分布(其他文件夹和01#有同样的结构分布):

下各个文件数目。这是一个三级目录,并且由于需要这样统计的文件夹还有很多,用鼠标一个个查看然后手动汇总这些数目真的是很费力,聪明如我这样的人是不会这么蛮干的,这些文件目录都是有规律分布的,因此程序最适合干这样的事了,于是乎动手写了个Matlab程序来自动汇总这些文件夹的文件数目,为了保持文件夹及其子文件以及文件这样成树状分布(学过数据结构的大概都知道,没学过一句话说明:例如你有这样的目录D:/a/b,在b文件夹下有两个子文件c1,c2,那么a是根目录,b是a的孩子,c1和c2是b的孩子,这样的结构画出来就像一颗树状结构)的结构形式以方便查看,因此这个程序比直接获取文件夹然后统计文件数目要复杂些。具体见代码:

%2018/12/04 by DQ
%得到三级目录下的文件夹及其文件数目并生成excel 表单(树状结构)
clc;
clear ;
close all;
tic;
RootFolder='E:\原始数据';
MainFolder=fullfile(RootFolder,'可见光');
XlsFileName='图片量记录表.xls';
XlsFilePath=fullfile(RootFolder,XlsFileName);
S1FolderSet=dir(MainFolder);
S1FolderNum=length(S1FolderSet);
K1=4;
xlRange=sprintf('E%d:F%d:G%d',K1-2,K1-2,K1-2);
xlswrite(XlsFilePath,{'图片总量','使用量','备注说明'},'sheet1',xlRange);
AllImNumLoc=K1-1;
AllImNum=0;
for i=3:S1FolderNum
    S1FolderName=S1FolderSet(i).name;
    S1FolderPath=fullfile(MainFolder,S1FolderName);
    S2FolderSet=dir(S1FolderPath);
    S2FolderNum=length(S2FolderSet);
    S1FolderLoc=K1;
    xlRange=sprintf('A%d',S1FolderLoc);
    xlswrite(XlsFilePath,{S1FolderName},'sheet1',xlRange);
    TotalImNum=0;
    K2=S1FolderLoc;
    fprintf('doing %s\n',S1FolderName);
    for j=3:S2FolderNum
        S2FolderName=S2FolderSet(j).name;
        S2FolderPath=fullfile(S1FolderPath,S2FolderName);
        S3FolderSet=dir(S2FolderPath);
        S3FolderNum=length(S3FolderSet);
        S2FolderLoc=K2+1;
        xlRange=sprintf('B%d',S2FolderLoc);
        xlswrite(XlsFilePath,{S2FolderName},'sheet1',xlRange);
        K3=0;
         fprintf('------%s------\n',S2FolderName);
        for k=3:S3FolderNum
            S3FolderName=S3FolderSet(k).name;
            S3FolderPath=fullfile(S2FolderPath,S3FolderName);
            if isdir(S3FolderPath)
                K3=K3+1;
                S3FolderLoc=S2FolderLoc+K3;
                xlRange=sprintf('C%d',S3FolderLoc);
                xlswrite(XlsFilePath,{S3FolderName},'sheet1',xlRange);
                fprintf('%s\n',S3FolderName);
                ImSet=dir(strcat(S3FolderPath,'/*.jpg'));
                ImNum=length(ImSet);
                xlRange=sprintf('D%d',S3FolderLoc);
                xlswrite(XlsFilePath,{ImNum},'sheet1',xlRange);
                TotalImNum=TotalImNum+ImNum;
            else
                continue;
            end
        end
        K2=S3FolderLoc;
    end
    xlRange=sprintf('E%d',S1FolderLoc);
    xlswrite(XlsFilePath,{TotalImNum},'sheet1',xlRange);
    AllImNum=AllImNum+TotalImNum;
    K1=K2+1;
end
 xlRange=sprintf('E%d',AllImNumLoc);
 xlswrite(XlsFilePath,{AllImNum},'sheet1',xlRange);
 toc;

运行程序将得到如下图所示excel统计表单:

如此就完成了文件夹下文件汇总

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值