delete subfolder with specific name*

조회 수: 4 (최근 30일)
Long Hà Vinh
Long Hà Vinh 2018년 12월 17일
편집: Stephen23 2018년 12월 17일
I have 1 <main folder> with many subfolder like:
<output_figure_file_1>
<output_figure_file_2>
<output_figure_file_3>
<output_data_file_1>
<output_data_file_2>
<output_data_file_3>
<file_1>
<file_2>
<file_3>
With some file inside subfolder. Now I need to delete all sub-folder named <output_figure_file_*>
with using this code:
close all; clear all; clc;
% remove sub folder on input
d=dir('output_figure_*')
dirlist=d([d.isdir])
dirlist=dirlist(~ismember({dirlist.name},{'.','..'}));
for idir=1:numel(dirlist)
%dird=fullfile(pwd,(dirlist(idir).name))
rmdir((dirlist(idir).name),'s')
end
It caused eror said:
??? Error using ==> rmdir
No directories were removed.
Error in ==> Untitled at 8
rmdir((dirlist(idir).name),'s')
Any one pls help me to fix this eror.
My version is R2008a
  댓글 수: 2
Guillaume
Guillaume 2018년 12월 17일
Change the call to rmdir to:
[status, message] = rmdir(dirlist(idir).name, 's');
if ~status
error('Fed to remove %s, because %s', dirlist(idir).name, message);
end
and tell us what the new error message is.
Long Hà Vinh
Long Hà Vinh 2018년 12월 17일
I keep 1 file on opened. So It can not delete the 1st folder. I am so woolgathering. Sorry!

댓글을 달려면 로그인하십시오.

채택된 답변

Jan
Jan 2018년 12월 17일
Add some error messages:
base = cd;
d = dir(fullfile(base, 'output_figure_*'));
dirlist = d([d.isdir]);
dirlist = dirlist(~ismember({dirlist.name}, {'.','..'}));
for idir = 1:numel(dirlist)
folder = fullfile(base, dirlist(idir).name);
[status, msg] = rmdir(folder, , 's');
if status ~= 1
error('rmdir:failed:now', 'Folder: %s, Message: %s', folder, msg);
end
end
What do you get as message?
Is one of the files opened anywhere?
  댓글 수: 2
Long Hà Vinh
Long Hà Vinh 2018년 12월 17일
Dear Jan
You right, I keep 1 file in folder <output_figure_file_1> opened so I can not pass the loop 1. Now I turn it off and it run. Thanks!
Stephen23
Stephen23 2018년 12월 17일
편집: Stephen23 2018년 12월 17일
An alternative to if and error is to use assert:
assert(status==1,'rmdir:failed:now', 'Folder: %s, Message: %s', folder, msg)

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 File Operations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by