필터 지우기
필터 지우기

filesep and move contents

조회 수: 5 (최근 30일)
YOGESH
YOGESH 2011년 10월 19일
Hello, I have two folders. both contain some subfolders, and their subfolders also contain subfolders.
abc1 >> sdir1 >> ab1 >> file1.txt
abc1 >> sdir2 >> ab1 >> file2.txt
abc1 >> sdir3 >> ab1 >> file3.txt
|and|
xyz2 >> sdir1 >>
xyz2 >> sdir2 >>
xyz2 >> sdir3 >>
Ok, Now I want to go in abc1, into sdir1 and move everything to xyz2 into sdir1 next, change to folder abc1 into sdir2 and move everything to xyz2 into sdir2. I want to do in a for loop, and i tried something like this
cd D:\abc1\;
dir = dir;
list1 = dir(3:end);
% check whether the folder (sdir1,2..)me name exists
for i = 1:length(list1)
if (exist (fullfile 'D:','xyz2','list1(i)'))
disp 'folder exists...'
continue
else
stop
disp 'folder doesnt exist...'
end
cd (list1{i})
mv '*' (fullfile('D:','xyz2','list1(i)'));
cd ../;
end
any idea how I can do this?

채택된 답변

Jan
Jan 2011년 10월 19일
Using the abbreviated form of functions without using parenthesis is confusing. I strongly recommend to stay at the functional form to avoid strange pitfals:
cd D:\dir1\; ==> cd('D:\dir1\');
disp 'folder exists...' ==> disp('folder exists...')
Sometimes the almost intelligent parsing works, but as a drawback you steer into lines like this, which are deeply confused:
if (exist (fullfile 'D:','dir2','list1(i)'))
% Better:
if exist(fullfile('D:', 'dir2', list1{i}), 'file')
Do not use the names of build-in functions as names of variables:
dir = dir % *never never never*
After this the dir command cannot be used anymore.
What does the stop command do?
Please fix this and edit the original question. Then the rest can be enhanced in a further step.

추가 답변 (1개)

YOGESH
YOGESH 2011년 10월 19일
|Thanks Jan
Now the code after your suggestion, will be
cd('D:\abc1\');
list_dir = dir;
list1 = list_dir(3:end);
% check whether the folders (sdir1,2..) exists in xyz2
for i = 1:length(list1)
if exist(fullfile('D:', 'xyz2', list1{i}), 'file')
disp('folder exists...')
continue
else
stop
disp ('folder doesnt exist...')
end
Now enter in the dir abc1 >> sdir1
cd (list1{i});
Move everything to dir xyz2 >> sdir1 only if sdir1 exist in xyz2
mv '*' (fullfile('D:','xyz2','list1(i)'));
cd (../);
end

카테고리

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