MATLAB脚本批量对文件进行重命名(解决了系统找不到指定的文件问题)

主要针对数据库进行重命名,采用MATLAB代码进行脚本的编写,所使用的数据库路径如下(共792个子文件),每个子文件有数量不定的图片,对图片进行重命名(针对其他类型文件只需将jpg进行修改如用txt替换等等):
在这里插入图片描述
具体代码如下,所使用的语言为MATLAB:

close all
clc;

path = 'D:\虹膜数据库\WLB_Gabor\CASIA-Lamp\00';   %由于子文件命名为有序编码,因此设定一个可变路径
subpath = '00';

for i=1:792                                      %子文件数量,通过i确定子文件
    if i>=10
        path = 'D:\虹膜数据库\WLB_Gabor\CASIA-Lamp\0';
        subpath = '0';
    end
    if i>=100
        path = 'D:\虹膜数据库\WLB_Gabor\CASIA-Lamp\';
        subpath = '';
    end
    
    filepath = strcat(path,num2str(i),'\','*.jpg'); %该子文件的所有jpg图片     
    files = dir(filepath);                          %文件夹存放的绝对路径
    len = length(files);                            %子文件夹下的图片数量
    FP = strcat(path,num2str(i));                   %子文件夹路径
    cd(FP);                                         %进入子文件夹,缺少这个会出现找不到文件的情况,其原因是重命名操作需在
                                                    %图片所在的文件夹下进行

    for j=1:len                                     %对子文件夹下的所有图片进行重命名
        oldname = files(j).name;
        a = sprintf('%03d',j);
        temp = num2str(a);
        idex = char('.jpg');                        %idex字符型表达
        
        newname = strcat(temp,idex);                %newname=j.jpg (字符型)
        command = ['rename',32,oldname,32,newname]; %rename oldname newname在操作系统中为对文件进行重命名

        status = dos(command);                      %调用dos命令,执行成功 status值为0
        if status == 0
            disp([oldname,'重命名',newname]);
        else
            disp([oldname,'命名失败']);
        end
    end
end

注意代码中的cd命令不可少,若只需对单个文件夹里的数据进行重新命名则代码如下:

close all
clc;
path = 'D:\虹膜数据库\WLB_Gabor\CASIA-Lamp\001'
    filepath = strcat(path,'\','*.jpg');
    files = dir(filepath);
    len = length(files);
    cd(path);
    for j=1:len
        oldname = files(j).name;
        a = sprintf('%03d',j);
        temp = num2str(a);
        idex = char('.jpg');
        
        newname = strcat(temp,idex);
        command = ['rename',32,oldname,32,newname];

        status = dos(command);
        if status == 0
            disp([oldname,'重命名',newname]);
        else
            disp([oldname,'命名失败']);
        end
    end

缺少cd命令(进入文件夹执行),会出现如下情况:
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值