用MATLAB将多个文件夹内的某些文件汇总到另一个文件夹

为了学习Python下载了一个视频教程,可是发现是很多(13个)压缩包组成的,而不是将视频放在一个文件夹内,虽然能够快速单独解压出来,但是仍然是13个文件夹,就是下图的样子,想要看视频还得去点每一个文件夹,甚是不便,于是想着用matlab来解决这个问题,把每个文件夹内的视频文件移动到一个新的文件夹内。

matlab代码:

status=[];  % 操作状态矩阵
for i=1:13
    dir_name=['Python.Django视频教程-' num2str(i)];  % 获取各个子文件夹的名称
    list=dir(dir_name);  % list是一个结构体数组(struct array)
    file=list(4).name;  % 所需文件在list的第4个元素,获取其文件名
    source=[pwd '\' dir_name '\' list(4).name];  % 由于源文件不在工作目录下,故需生成绝对路径
    [SUCCESS,MESSAGE,MESSAGEID]=movefile(source,'E:\个人资料\软件学习\Python\Django视频教程\');
    status=[status,SUCCESS];
end
status

最后可以通过查看输出的操作状态矩阵status来判断是否操作成功,成功为1,失败为0。另外其中的pwd是一个函数,用于显示当前工作目录。 详细说下猪(zhu)脚(jue)——movefile函数,顾名思义就是“移动文件”,可以理解为我们日常的ctrl+x剪切,相应的还有copyfile、deletefile等等函数。我把movefile函数的帮助信息简单的翻译一下: [SUCCESS,MESSAGE,MESSAGEID] = movefile(SOURCE,DESTINATION,MODE),第一个输出项是SUCCESS,表示是否成功(1和0);第二个输出项是MESSAGE,表示出错信息,如果出错就会显示否则为空;第三个输出项为MESSGAEID,是出错信息的标识。第一个输入项是SOURCE,是你要移动的文件名或者目录,如果文件不在工作目录下就需要写上绝对路径;第二个输入项是DESTINATION,是你要移动到哪,是一个目录或者文件,如果你要移动的是目录而DESTINATION不存在,movefile就会创建DESTINATION(作为目录创建)并且把你要移动的目录下的内容放到DESTINATION下,实际上(effectively)就是重命名SOURCE;如果你要移动的是单个文件而DESTINATION不是一个目录或者说不存在,那么movefile函数实际上就是重命名DESTINATION。第三个输入项是MODE,这一项可以不写,但是如果你写为’f’,那么movefile函数将会强制(force)将SOURCE移动到DESTINATION,即使DESTINATION是只写属性(read-only),并且如果SOURCE和DESTINATION都是单个文件(比如都是TXT文件或者word文档),那么将会用SOURCE里的内容强制覆盖DESTINATION的内容(是不是有点像Linux的root)。

另外有几点需要注意:movefile函数不能将文件自己移动到自己(废话~),也不能将多个文件移动到一个文件。 好了,关于movefile函数就先暂时写到这(hao)吧(lei)。

折腾了几个小时才成型(是不是智商有点不够啦),主要是对matlab中的文件操作基本上还是第一次接触尝试,之前都是各种数学矩阵运算和GUI什么的,还在摸索中,尝试过程中错(bi)了(si)好(qiang)多(po)次(zheng)。。。。不过呢,觉得这个意义还是挺大的,如果不是13个文件夹而是50个甚至更多(对于我这种懒人来说13个够多了~^_^~),那意义就更明显了,能够大大提高我们的工作效率。

今天就先到这吧,吃饭去……

欢迎matlab的同志们前来交流哈~欢迎转载,转载请注明出处!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT技术精选文摘

排查Java的内存问题

核心要点 排查Java的内存问题可能会非常困难,但是正确的方法和适当的工具能够极大地简化这一过程; Java HotSpot JVM会报告各种OutOfMemo...

6995
来自专栏生信技能树

在ubuntu使用apt install的fastqc是有bug的

所以我就去了我的生物信息学常见1000个软件的安装代码:https://www.jianshu.com/p/ae28e8e3e9f5 找到了fastqc软件下载...

832
来自专栏互联网杂技

内存卡存储原理,你知道吗?

1、 简介: SD卡(Secure Digital Memory Card)是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器...

3826
来自专栏腾讯移动品质中心TMQ的专栏

管中窥豹:结合NewApi实践来了解Lint代码扫描

导读 lint是著名的C/C++语言静态代码分析工具之一,Android Lint顾名思义,针对Android的静态代码分析工具,能够对Android项目中潜在...

19910
来自专栏Java技术

关于Java健壮性的一些思考与实践!

上面两种模式都可以实现标准的 response 的封装,那么具体要封装哪些东西呢?其实最主要的就是统一的 try catch,防止出现任何的 500 错误给到调...

772
来自专栏ml

acm系统开发笔记

时间:     2016/2/29   遇到的困难:  数据库配置的mysql和java(Date)不一致,出现下面错误 1 Date date = new D...

3938
来自专栏IMWeb前端团队

在NodeJS中玩转Protocol Buffer

本文作者:IMWeb link 原文出处:IMWeb社区 未经同意,禁止转载 这篇文章的代码都是基于Protobuf.js 4.x的API写的,已经...

4788
来自专栏ChaMd5安全团队

DedeCMS的两个小trick

0x00 前言 昨天晚上做了一个神奇的梦,梦到了我高中时候晚自习在偷偷的看《黑客攻防技术宝典》,当年的事情无论是苦是乐,回忆起来总是感觉非常的美好。但是,现实就...

2989
来自专栏后台及大数据开发

【高并发】秒杀系统高并发请求排队处理

今天无意中看见了这位兄弟的文章 通过请求队列的方式来缓解高并发抢购(初探)  但文章最后说并发超过500 就会出现超发,看了下代码,的确有这个问题

1251
来自专栏Golang语言社区

Golang事务模型

序言 笔者在《软件设计的演变过程》一文中,将通信系统软件的DDD分层模型最终演进为五层模型,即调度层(Schedule)、事务层(Transaction DSL...

3735

扫码关注云+社区