Using movefile to rename files
조회 수: 85 (최근 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에서 Startup and Shutdown에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!