文件重命名批量处理(Matlab)

时间:2022-05-30 11:33:42

第一种方法:eval 方法
该方法未对文件进行任何处理,直接重命名。文件不损失任何信息。


tic
clear;
close all;
% edited by cmwang,if any problem,please reference the website
%http://blog.csdn.net/jiandanjinxin/article/details/51513598

%-------------------------------------------------------------------------
% 读取文件方法1
srcDir=uigetdir('Choose source directory.'); %获得选择的文件夹
cd(srcDir);
% 读取文件方法2
% % srcDir='.\FinalJPEG2048'; %获得选择的文件夹
% % cd(srcDir);
%--------------------------------------------------------------------------

% 带有时间标志的重命名文件夹年月日和时刻
savetime = fix(clock);
savetimestr = num2str(savetime);
savetimestr(isspace(savetimestr)) = []; %去除所有空格
Renamefullname = ['Rename' savetimestr];

if exist(Renamefullname,'dir') == 0
mkdir (Renamefullname)
else
cd Renamefullname
delete *
cd ..
end

% 复制重命名文件夹到带有时间标志的文件夹中
copyfile('*.jpg',Renamefullname)

cd(Renamefullname);
allnames=struct2cell(dir('*.jpg')); %只处理8位的jpg文件
[k,len]=size(allnames); %获得jpg文件的个数

for ii=1:len
%逐次取出文件
name=allnames{1,ii};

%----------------------------------------------------------------------
% 重命名规则为原始图像中的数值加上100,你可在此区域添加你自己的重命名规则
newnameformat =name(end-3:end);
numberstr1 = name(end-6:end-4);
number = str2num(numberstr1);
number2 =num2str(number+100);
newname = [number2 newnameformat];
%----------------------------------------------------------------------

% 关于renameStr一定要注意里面的空格和双引号
renameStr = ['!rename', ' "',name,'" ',newname];
eval(renameStr)
end
cd ..
close all;
Renametime = toc;

disp('------------------------------------------------------------------')
disp(['The Rename time is ', num2str(Renametime), 's'])
disp('------------------------------------------------------------------')

第二种方法: imwrite
该方法对文件进行了处理在另存为,即重命名。但是文件有可能会损失信息,具体信息可对比重命名前后文件的大小。

tic
clear;
close all;
% edited by cmwang,if any problem,please reference the website
%http://blog.csdn.net/jiandanjinxin/article/details/51513598

%-------------------------------------------------------------------------
% 读取文件方法1
srcDir=uigetdir('Choose source directory.'); %获得选择的文件夹
cd(srcDir);
allnames=struct2cell(dir('*.jpg')); %只处理8位的jpg文件
[k,len]=size(allnames); %获得jpg文件的个数

% 读取文件方法2
% % srcDir='.\FinalJPEG2048'; %获得选择的文件夹
% % cd(srcDir);
%--------------------------------------------------------------------------

% 带有时间标志的重命名文件夹年月日和时刻
savetime = fix(clock);
savetimestr = num2str(savetime);
savetimestr(isspace(savetimestr)) = []; %去除所有空格
Renamefullname = ['Rename' savetimestr];

if exist(Renamefullname,'dir') == 0
mkdir (Renamefullname)
else
cd Renamefullname
delete *
cd ..
end

for ii=1:len
%逐次取出文件
name=allnames{1,ii};
I=imread(name); %读取文件

%-------------------------------------------------------------------------
%然后在此处添加你的图像处理程序即可
if size(I,3)==3;
A = rgb2gray(I);
else
A = I;
end
%-------------------------------------------------------------------------

%----------------------------------------------------------------------
% 重命名规则为原始图像中的数值加上100,你可在此区域添加你自己的重命名规则
newnameformat =name(end-3:end);
numberstr1 = name(end-6:end-4);
number = str2num(numberstr1);
number2 =num2str(number+100);
newname = [number2 newnameformat];
%----------------------------------------------------------------------

% 注意imwrite中的空格
imwrite(A,['.\' Renamefullname '\',newname])
end
close all;
Renametime = toc;

disp('
------------------------------------------------------------------')
disp(['
The Rename time is ', num2str(Renametime), 's'])
disp('
------------------------------------------------------------------')