首页 > Matlab > Matlab对文件夹下所有文件进行操作接口

Matlab对文件夹下所有文件进行操作接口

2013年5月22日 发表评论 阅读评论

事情起因是这个样子的,三件事;

一件是,之前一直用来下载漫画的软件是comicdown,结果之前,也算挺久之前的了,官方更新成了一个界面各种碉堡(相比于旧版本的comicdown),据说很好用的下载器,结果用了一下,好吧,其实不是黑,我想说真的不好用,各种不良的交互性,算了,这还不说,重点是下来的漫画还有些有问题,用手机或者pad打开就是什么状况呢?上面一部分,或多或少,是正常显示的,下面呢,就全是灰色的,准确点就是rgb=(192,192,192),以前的comicdown也会出现下载的漫画有损坏的状况,但是他的文件名会带有“下载失败”字样,你只要搜索“下载失败”这四个字,就可以把所有失败的拎出来,删掉,再打开下载器就可以重下一下缺少的,也就是被删除的,一般第二遍就能全部完成了,但是新的千寻漫画呢?他就是正常的文件名,除非你打开漫画,不然绝对不可能找得出来哪个坏了,然后我的“漫画”文件夹下n多部漫画,每部n卷,所以只好想个办法,全部文件一个一个用程序检测是不是顺坏了,好吧,除了吐槽千寻漫画外,我想说的就是,有个需求,需要找到一个大文件夹下所有符合满足特定条件的文件,然后对其进行操作。

第二件事则简单一些,就是因为某些原因,我需要把一个文件夹下的图片不是jpg格式的全部变成jpg,嗯,就是这么简单,说白了,也是上面这个需求是吧。。但是我之前一直用的那个转图片格式的居然不支持png,所以突然想用matlab里面的万能接口imread。。。

第三件,大家都知道的,对于歌曲,MP3格式,导入到设备中会显示歌曲名,但是不是文件名,因为文件名一般会有"1.XXX","1-XXX"这种,想删掉前面的数字,因为这样打开文件夹,键盘上按下前几个字母就可以很快的定位到歌曲,另外又想顺便把我8+G的music文件夹中重复的歌曲删掉,这样有时需要扫描全部文件和子文件夹。。。 

所以几次下来,就顺手写个简单的matlab接口,有什么要做的就在接口那里写上对文件要进行什么样的处置就好了。。其实这个工作是超级简单的,写上来,也就是留个笔记,下次方便复制粘贴。。。以上!!

下面是代码:


Code:

function DoAllFile(file_path)
clc;
if(file_path(end) ~= '\')
    file_path = [file_path '\'];
end
Interator(file_path);

function Interator(path)
file_list = dir(path);
for i = 1 : length(file_list)
    if(strcmp(file_list(i).name,'.')||strcmp(file_list(i).name,'..'))
        continue;
    elseif(file_list(i).isdir)
         new_path = [path  file_list(i).name '\'];
         Interator(new_path);
    else
        new_path = [path  file_list(i).name];
        DoWithFile(new_path);
    end
end

function DoWithFile(path)
%对path这个路径的文件要做什么在下面填写就可以了。。。

比如说吧,我现在想对我漫画目录下的所有漫画进行压缩打包,就可以用下面代码:

function ComicZip()
clc;
file_path = 'F:\漫画\';
if(file_path(end) ~= '\')
    file_path = [file_path '\'];
end
Interator(file_path,0);

function Interator(path,depth)
file_list = dir(path);
for i = 1 : length(file_list)
    if(strcmp(file_list(i).name,'.') | strcmp(file_list(i).name,'..'))
        continue;
    elseif(file_list(i).isdir)
        new_path = [path file_list(i).name '\'];
        if(depth == 2)
           DoWithDirection(new_path,file_list(i).name);
        else
           Interator(new_path,depth+1);
        end
    else
        continue;
    end
end

function DoWithDirection(path,filename)
disp(['正在打包  ' path ':']);
zip([filename '.zip'],path);
movefile([filename '.zip'],path(1:length(path)-1-length(filename)));
rmdir(path,'s');
disp(['删除  ' path ':']);

【完】

本文内容遵从CC版权协议,转载请注明出自http://www.kylen314.com

分类: Matlab 标签: ,
  • 一只会跳的狗

    厉害!