0

ファイルの作成日を含めて、すべての名前を編集したいファイルがたくさんあります。

これは私がこれまでに持っているものですが、機能しません:

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
4

2 に答える 2

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エラーを処理するには、からの戻り値も確認する必要があります。詳細については、ドキュメントを参照してください。

于 2012-08-14T11:57:04.577 に答える
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
于 2012-08-14T12:23:49.533 に答える