Matlab根據文件命名創建不同文件夾


Matlab中的字符或字符串可以以四種類型存在:

char   '  '   :num2str()   a='******'     char()

string   "  " : string() 

cell數組中的元素 cell類型  data(1)  或者 char類型  data{1}

struct結構體數組的字段容器中(.name 'char'類型) 結構體每個字段都可以包含任意類型的數據

文件路徑一般是char類型

如果想創造一個數組來存放時間的話,選擇cell數組比較合適,如果是char類型的話,就不能以數組中的某個元素表示整個的日期字符字段

原始文件:

 希望按照tiff文件命名中的時間,如 "2016001",創建以不同時間命名的文件夾,同時將數據按照命名中的時間移動到各時間子文件夾中

 完整代碼:

clc 
clear all
time={};%時間設為cell類型
fileFolder=fullfile('E:\1SMAPDATA\NDVIREF2016_2019\06SCALE');%需要分類的tiff文件所在的文件夾
timeFolder='E:\1SMAPDATA\NDVIREF2016_2019\07TIME';%輸出文件夾
dirOutput=dir(fullfile(fileFolder,'*.tif')); 
fileNames={dirOutput.name}'; 
for i=1:length(fileNames)
     time=[time;num2date(fileNames{i}(2:8))];%fileNames{i}(2:8)需要為char類型
     %num2date函數將'2016353'轉為'20161218'形式 代碼見https://www.cnblogs.com/icydengyw/p/12448521.html
end
 
time=unique(time);%將time矩陣中的重復元素刪去
for i=1:length(time)
     mkdir([timeFolder,'\'],time{i});%在當前目錄創建文件夾 注意文件夾名字為char類型
end
  
for i = 1:length(time)%遍歷每個時間
    for j=1:length(fileNames)%遍歷所有的tiff文件  
    subTime=num2date(fileNames{j}(2:8));
    if strcmp(subTime,time{i})  %截取時間字段進行比較  
        DSTPATH= [timeFolder ,'\',time{i}]; %%目的時間文件夾目錄,最后可加'\'
        copyfile([fileFolder,'\',fileNames{j}],DSTPATH); %移動
    end
    end
end 

結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM