使用文件的创建日期并将其添加到matlab中的文件名称

时间:2012-08-14 11:39:40

标签: 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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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