自定义字符串格式-批量修改文件名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 - 文件属性 结构体数组
文件属性,以 n
x1 结构体数组形式返回,其中 n
是 dir
命令返回的文件和文件夹的数量。
下表显示了结构体中的字段。
字段名称 | 说明 | 类 |
---|---|---|
name | 文件或文件夹名称 |
|
folder | 文件或文件夹的位置 |
|
date | 修改日期时间戳 |
|
bytes | 文件大小(以字节为单位) |
|
isdir | 如果名称为文件夹,则为 |
|
datenum | 修改日期是一个日期序列值。 |
|
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