2012-08-14 59 views
0

我有很多文件,我想通過包括文件的創建日期來編輯所有名稱。使用文件的創建日期並將其添加到matlab中的文件的名稱

這是我有這麼遠,但它不工作:

a='c:\test_for_namn_andring\*.*'; 

file_info=dir('c:\test_for_namn_andring\*.*'); 

names={file_info.name}; 
dates={file_info.date}; 

for i=3:length(names) 

    oldfilename = names; 
    newfilename = (strcat(names(1,3:end), dates(1,3:end))); 
    newfilename = fullfile(a, newfilename); 
    movefile(fullfile(a,oldfilename{i}),newfilename); 

end 

回答

1

我在過去做過類似的事情。這裏是代碼,根據您的需求進行調整

% define params 
folder = 'd:/test'; 
name_filter = '*.*';    % any filter, e.g. '*.txt' 
date_format = '_yyyymmddHHMMSSFFF'; % define the desired date string format 

% process 
f = dir(fullfile(folder, name_filter)); 
f([f.isdir]) = []; 
names = {f.name}'; 
fullnames_old = cellfun(@(x) fullfile(folder, x), names, 'UniformOutput', false); 

dates = cellstr(datestr([f.datenum]', date_format)); 
[pathstr, name, ext] = cellfun(@(x) fileparts(x), names, 'UniformOutput', false); 
fullnames_new = cellfun(@(x, d, e) fullfile(folder, [x, d, e]), name, dates, ext, 'UniformOutput', false); 
status = cellfun(@(x, y) movefile(x, y, 'f'), fullnames_old, fullnames_new); 
assert(all(status), 'failed!');  % check result 
1

像這樣的東西應該工作:

file_info = dir(a); 

for ii = 1:length(file_info) 
    if ~ file_info(ii).isdir 
     oldName = fullfile(a, file_info(ii).name); 
     newName = fullfile(a, sprintf('%s_%s', file_info(ii).name, file_info(ii).date)); 
     movefile(oldName, newName); 
    end 
end 

你或許應該也movefile檢查返回來處理錯誤。有關更多信息,請參見the doc

+0

我得到錯誤使用movefile的錯誤 沒有找到匹配的文件。 – user531225 2012-08-14 12:02:00

+1

按照預期工作,請學習調試:http://www.mathworks.nl/help/techdoc/matlab_prog/f10-60570.html和http://blogs.mathworks.com/videos/2012/07/03 /調試功能於MATLAB / – 2012-08-14 12:15:40

相關問題