今天解决的问题:
1、如何利用MATLAB批量修改文件名?
(前面写过一次bat命令法,这个应该也算一次改进,程序的初衷是想将Smartsolo导出的文件名批量修改为以炮点桩号为文件名)
2、如何利用MATLAB选择性批量复制/剪切文件?
(程序的初衷是读取激发时间的时候需要从所有检波点数据中把激发点的文件筛选出来)
两个程序都不受限于文件类型。
程序都是为了解决平时工作中遇到的特定问题,具有一定的针对性。
比如目标文件名都是数字,具有一定特殊性。
函数具体使用方法在MATLAB中用help+函数名等方法都可以查看,就不再放函数使用链接。
1、利用MATLAB批量修改文件名—CCL_filerename()
%这个程序适用于所有类型文件名的批量修改,但运行速度比bat命令慢
代码:
function [file_num]=CCL_filerename(file_begin,file_int,path_in,data_suffix)
%file_begin为起始文件名
%file_int为文件名之间的间隔
%path_in为文件所在路径
%data_suffix为文件后缀名,也就是数据类型
%file_num为文件数量的返回值
cd(path_in); %进入文件所在的文件路径
file_all=dir(['*',data_suffix]); %读取当前文件夹下所有文件名,返回的为结构体,包含文件名,修改时间,大小等信息
file_num=length(file_all); %文件数量
for i=1:file_num
ori_name=file_all(i).name; %原始文件名
file_name=file_begin+file_int*(i-1); %目标文件名
new_name=[num2str(file_name),data_suffix]; %目标文件名加后缀
eval(['!rename' ' ' ori_name ' ' new_name]); %修改文件名
end
end
程序运行:
原始数据:
文件名修改后数据:
2、利用MATLAB选择性批量复制/剪切文件—CCL_fileselect()
代码:
function [copy_num]=CCL_fileselect(file_begin,file_int,data_suffix,path_in,path_out)
%file_begin为从第几个文件开始
%file_int为文件之间的间隔
%data_suffix为文件后缀名
%path_in为当前文件所在路径
%path_out为目标文件路径
%copy_num为复制的文件个数的返回值
%注:目标文件路径需在当前路径下,即目标文件夹应为当前文件夹的子文件夹
cd(path_in); %进入文件所在的文件路径
file_all=dir(['*',data_suffix]); %读取当前文件夹下所有文件名,返回的为结构体,包含文件名,修改时间,大小等信息
file_num=length(file_all); %文件数量
copy_num=0;
for i=file_begin:file_int:file_num
copyfile(file_all(i).name,path_out); %复制文件至目标文件路径
%movefile(file_all(i).name,path_out); %剪切文件至目标文件路径
copy_num=copy_num+1; %累计复制的文件个数
end
end
如:激发点从1000开始,间距为4,提取激发点文件。
程序运行:
当前文件路径:
目标文件路径程序运行结果:
好久没登账号今天突然看见多了两个粉丝,感谢你们的关注。
每天解决一个小问题。