Matlab:批量文件命名

 

自定义字符串格式-批量修改文件名matlab源码:


path='E:\文档\单位资料\工作资料\尿道结石\数据\温州市结石-分割数据\罗碧容-CT470212-5mm stnd-20180701_20181016093502424\';
files = dir(strcat(path,'*.dcm'));
len=length(files);
pName = 'LuoBiRong';
for i=1:len
    oldname=files(i).name;%获得文件名字符串
    tmp1=strfind(oldname,'-');%按自己要求截取字符串
    tmp2=strfind(oldname,'.');%按自己要求截取字符串
    tmp3=oldname(tmp1(1):tmp2(end)-1);%按自己要求截取字符串
    
    newname=strcat(pName,tmp3,'.dcm');%按自己要求合成新字符串
    copyfile([path oldname],['E:\文档\单位资料\工作资料\尿道结石\数据\温州市结石-分割数据\' pName '\' newname])% 可使用movefile作剪切

end

代码参考这篇文章修改的:https://blog.csdn.net/justforacm/article/details/80319315

1、dir函数:

listing = dir(name)

listing - 文件属性 结构体数组

文件属性,以 nx1 结构体数组形式返回,其中 n 是 dir 命令返回的文件和文件夹的数量。

下表显示了结构体中的字段。

字段名称

说明

name

文件或文件夹名称

char

folder

文件或文件夹的位置

char

date

修改日期时间戳

char

bytes

文件大小(以字节为单位)

double

isdir

如果名称为文件夹,则为 1;如果名称为文件,则为 0

logical

datenum

修改日期是一个日期序列值。

double

2、copyfile函数:

copyfile myfile1.m myfile2.m

 

 

最后完整代码:只需要输入一个参数,folderPath。自动遍历下面所有文件夹下的dcm重新命名。

function [subDir] =  GetFolderList()
folderPath= 'E:\文档\单位资料\工作资料\尿道结石\数据\温州市结石-分割数据\';
path = fullfile(folderPath);
folderList = dir(path);%列出该文件夹下所有文件和文件夹);


for i=1:length(folderList);
       
    if( isequal( folderList(i).name, '.' )||...%如果是.则跳过
        isequal( folderList(i).name, '..')||...%如果是..则跳过
        ~folderList(i).isdir())               % 如果不是目录则跳过
            continue;
    end
    subDir = fullfile(path,folderList(i).name); 
    ChangeFileName(subDir,folderList(i).name,folderPath);
end
disp('finish!')
end
function[] = ChangeFileName(path,dirName,folderPath)
%dirName='朱清申-CT333762-0.625mm stnd-20180314_20181016093611298\';
files = dir(fullfile(path,'*.dcm'));%当前文件夹下所有文件
len=length(files);
pNameList=strfind(dirName,'-');%按自己要求截取字符串
pName = dirName(1:pNameList(1)-1);%要第一个人名字。

if ~exist(fullfile(folderPath,pName),'dir')
       mkdir(fullfile(folderPath,pName));
end
    
for i=1:len
    oldname=files(i).name;%获得文件名字符串
    tmp1=strfind(oldname,'-');%按自己要求截取字符串
    tmp2=strfind(oldname,'.');%按自己要求截取字符串
    tmp3=oldname(tmp1(1)+1:tmp2(end)-1);%按自己要求截取字符串
    
    newname=strcat(tmp3,'.dcm');%按自己要求合成新字符串
       
    copyfile(fullfile(path,oldname),fullfile(folderPath,pName,newname))% 可使用movefile作剪切

end
end

 

你可能感兴趣的:(matlab)