Effacer les filtres
Effacer les filtres

Using movefile to rename files

84 vues (au cours des 30 derniers jours)
ardeshir moeinian
ardeshir moeinian le 5 Mar 2020
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!

Réponse acceptée

Image Analyst
Image Analyst le 5 Mar 2020
Modifié(e) : Image Analyst le 5 Mar 2020
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

Plus de réponses (0)

Catégories

En savoir plus sur Startup and Shutdown dans Help Center et File Exchange

Produits


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by