Using movefile to rename files
    조회 수: 17 (최근 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!
댓글 수: 0
채택된 답변
  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
추가 답변 (0개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 File Operations에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

