前面是搜索到的一些适合的方法,看一下尝试过多少几个代码。后面有总结。
1.先是批量重命名为数字1、2、3,
注意这个代码要放在和文件夹一样的地方,不然会出错。就是dir(*.jpg)这句话是一定不能改路径的!
clc;
clear all;
files = dir('*.jpg');
len=length(files);
for i=1:len
oldname=files(i).name;
name=num2str(i);
newname=strcat(name,'.jpg');
command = ['rename' 32 oldname 32 newname];
status = dos(command);
if status == 0
disp([oldname, ' 已被重命名为 ', newname])
else
disp([oldname, ' 重命名失败!'])
end
end
2.再是为了读取顺序,重命名为001,002…
files = dir('*.jpg');
path1='C:\Users\Administrator.PC-20200404IITQ\Desktop\CUHK Student\Train\photos\'; % 文件所在文件夹路径
path2='C:\Users\Administrator.PC-20200404IITQ\Desktop\CUHK Student\Train\photos2\'; % 文件重命名后存放的文件夹路径
len=length(files);
for i=1:len
oldname = files(i).name;
old_path = [path1,oldname]; % 文件路径
im = imread(old_path);
% 修改文件名,4位数,不足前面加0
new_path = sprintf('%s%03d.jpg',path2,i); % 重命名后新文件路径
imwrite(im,new_path);
end
一步到位:
直接对文件夹按读取顺序进行重命名,但是注意它是按读取顺序重命名的哦,我暂时只需要这个功能哈哈
clc;
clear all;
files = dir('*.jpg');
len=length(files);
for i=1:len
oldname=files(i).name;
name=num2str(i,'%03d');
newname=strcat(name,'.jpg');
command = ['rename' 32 oldname 32 newname];
status = dos(command);
if status == 0
disp([oldname, ' 已被重命名为 ', newname])
else
disp([oldname, ' 重命名失败!'])
end
end
0509补充:按名字来补零的,今天用这个代码发现上面命名还是按读取顺序命名,下面这个代码是把原来98变为098的,然后重新排序自然就是按顺序的了
先变换名字补零,后面再用第一部分的代码可以重新编号1,2.。。。
clc;
clear all;
files = dir('*.jpg');
path1='./'; % 文件所在文件夹路径
path2='../Train2/'; % 文件重命名后存放的文件夹路径
len=length(files);
for i=1:len
oldname = files(i).name;
old_path = [path1,oldname]; % 文件路径
im = imread(old_path);
% 修改文件名字符串部分,3位数,不足前面加0
name0 = oldname(1:end-4);
name1=str2num(name0);
name2=num2str(name1,'%03d');
name = sprintf('%s%s',path2,name2);
new_path=strcat(name,'.jpg');% 重命名后新文件路径
imwrite(im,new_path);
end
版权声明:本文为may0522原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。