matlab备份数据

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

备份数据是必不可少的一个工作,要不然,电脑特别是硬盘一出问题那就是很惨烈的事情。

在备份数据时,整个个文件夹拷贝似乎没有必要,因为从上次备份过改动了没几个文件,但是只挑改动过的文件备份也是件很麻烦的事情。

网上也有这样的软件,好像要钱。

用matlab写了个小程序,测试过了,可以用。

貌似matlab对一些字库支持的不全,如果文件名中包含€、Ø、å等这样的字符就会出错,可以在日志文件中查看。

function filebackup(folderSrc,folderObj)
% 文件备份程序
% 输入参数:folderSrc:源文件夹,即要备份的文件夹
% folderObj:目标文件夹,备份到哪里去
%
% 郑元林/s/blog_4b892b7901000633.html
% 举例:
% folderObj='I:\E-backup';
% folderSrc='e:\';
% filebackup(folderSrc,folderObj);
%
%% 日志文件名称
Logfilename='f:\backuplog.txt'; % 这个可以自定义
%% 判断源文件夹是否是系统目录,如果是,跳过
[stat,mess]=fileattrib(folderSrc);
if mess.system
return;
end
%% 不用备份的目录
antifolders={'E:\kankan';'E:\movie'}; % 把不用备份的目录写在这里,要是绝对路径
for i=1:length(antifolders)
if strcmpi(folderSrc,antifolders{i})
return;
end
end
%%
% 先判断目标文件夹是否存在
b1=exist(folderObj,'file');
if b1==0 % 目标文件夹不存在
b=mkdir(folderObj);
fid = fopen(Logfilename,'a+'); % 打开日志文件
fprintf(fid, '%s\r\n',strcat('创建目录 ',folderObj));
fclose(fid); % 关闭日志文件
if b==0
errordlg('Cant create the Objective folder, FAILED')
renturn;
end
end
%%
cd(folderSrc); % 进入源目录
files=dir; % 列举所有文件及文件夹
for i=1:length(files)
if strcmp(files(i).name,'.')==1 || strcmp(files(i).name,'..')==1 continue;
end
%% 获得目标文件和源文件的全路径
if strcmp(folderSrc(length(folderSrc)),'\')
fullpathnameSrc=strcat(folderSrc,files(i).name);
else
fullpathnameSrc=strcat(folderSrc,'\',files(i).name);
end
if strcmp(folderObj(length(folderObj)),'\')
fullpathnameObj=strcat(folderObj,files(i).name);
else
fullpathnameObj=strcat(folderObj,'\',files(i).name);
end
if files(i).isdir % 如果是文件夹则进入子文件夹
filebackup(fullpathnameSrc,fullpathnameObj);
else % 如果是文件,则处理文件
fid = fopen(Logfilename,'a+'); % 打开日志文件
b2=exist(fullpathnameObj,'file'); % 检查文件是否在目标文件夹存在
if b2 % 如果目标文件夹已经有了这个文件
attr=dir(fullpathnameObj); % 查找目标属性
if files(i).datenum > attr(1).datenum % 判断时间,如果源文件晚于目标文件
delete(fullpathnameObj); % 删除
[status,message,messageid]=copyfile(fullpathnameSrc, fullpathnameObj,'f'); % 复制文件
if status
fprintf(fid, '%s\r\n',strcat('覆盖文件
',fullpathnameObj));
else
fprintf(fid, '%s\r\n',strcat('覆盖错误!
',message,' 源文件:',fullpathnameSrc));
end
end
else % 如果没有
[status,message,messageid]=copyfile(fullpathnameSrc, fullpathnameObj,'f'); % 复制文件
if status
fprintf(fid, '%s\r\n',strcat('复制文件
',fullpathnameObj));
else
fprintf(fid, '%s\r\n',strcat('复制错误!
',message,' 源文件:',fullpathnameSrc));
end
end
fclose(fid); % 关闭日志文件
end
end。

相关文档
最新文档