Matlab:批量文件命名

本文介绍了一种使用Matlab批量修改DICOM文件名的方法,通过自定义字符串格式,实现了对文件名中特定部分的截取和重组,适用于大规模医疗影像数据的管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

自定义字符串格式-批量修改文件名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.youkuaiyun.com/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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值