Using movefile to rename files

84 次查看(过去 30 天)
Hi everyone,
I have a number of data files with .txt format which I want to rename. I use the following code to read the files:
Foldername = uigetdir('\'); % Choose raw data folder
folder = [Foldername,'\'];
folder_parts=regexp(folder,'\','split')';
files = dir(fullfile([folder],'*.txt') ); % ('*.txt' for finding only .txt);
file = {files.name}';
And after this point I want to change some of the file names. for example 'Cell4_pH6,6_2.txt' to 'Cell5_pH6,6_2'
Textfiles={files.name}';
for i=1:length(Textfiles)
newfile=strrep(Textfiles(i,:),'Cell5','Cell6');
oldfilename=convertCharsToStrings(Textfiles(i,:));
newfilename=convertCharsToStrings(newfile);
movefile(oldfilename,newfilename);
end
When I use the above commands I get an error:
Error using movefile
Cannot copy or move a file or directory onto itself.
How can I fix this?
Thank you!

采纳的回答

Image Analyst
Image Analyst 2020-3-5
编辑:Image Analyst 2020-3-5
You have a file where Cell5 does not occur in the name, so skip that one
Put this right after the for, as the first thing in the loop
if ~contains(Textfiles(i,:), 'Cell5', 'IgnoreCase', true)
continue; % Skip this file.
end
Alternatively, or perhaps even better since it does not depend on any particular string leteral being in the name, you could do
if ~isequal(oldfilename, oldfilename)
% Only rename if the filenames are different.
movefile(oldfilename, newfilename);
end

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Startup and Shutdown 的更多信息

产品


版本

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by