Matlab对文件夹下所有文件进行操作接口
事情起因是这个样子的,三件事;
一件是,之前一直用来下载漫画的软件是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
厉害!