Using movefile function in existing and unexisting files

15 ビュー (過去 30 日間)
julian gaviria
julian gaviria 2022 年 12 月 7 日
コメント済み: julian gaviria 2022 年 12 月 8 日
The following use of the "movefile" function works only if the requested files exist. But it yields error messages and stops the iteration when the files do not exist:
DistPath_MT = SourceFolder;
DistFolder_MT = fullfile(DistPath_MT,'MT');
if ~exist(DistFolder_MT )
mkdir(DistFolder_MT )
end
DistPath_T1w = SourceFolder;
DistFolder_T1w = fullfile(DistPath_T1w,'T1w');
if ~exist(DistFolder_T1w)
mkdir(DistFolder_T1w)
end
DistPath_PD = SourceFolder;
DistFolder_PD = fullfile(DistPath_T1w,'PD');
if ~exist(DistFolder_PD)
mkdir(DistFolder_PD)
end
movefile(fullfile(SourceFolder,'*_MT*'),DistFolder_MT);
movefile(fullfile(SourceFolder,'*_T1w*'),DistFolder_T1w);
movefile(fullfile(SourceFolder,'*_PD*'),DistFolder_PD );
How can I identify the target files in the SourceFolder , and move them to DistFolder when some of them exist while others don't? I unsuccesfully tried out something like:
if ~exist(DistFolder_MT)
movefile(fullfile(SourceFolder,'*_MT*'),DistFolder_MT)
end
%...the same for '*_T1w*' and '*_PD*'
Many thanks in advance
  1 件のコメント
Stephen23
Stephen23 2022 年 12 月 7 日
編集済み: Stephen23 2022 年 12 月 7 日
Note that the MOVEFILE documentation states "If source is a folder or is capable of specifying multiple files and destination does not exist, then movefile creates destination", so MKDIR is probably superfluous.

サインインしてコメントする。

採用された回答

Stephen23
Stephen23 2022 年 12 月 7 日
編集済み: Stephen23 2022 年 12 月 7 日
Capture the error as an output, and the error will not be thrown when you call the function:
[X,Y,Z] = movefile('doesnotexist*.txt','subdir')
X = logical
0
Y = 'No matching files named '/users/mss.system.Chrpre/doesnotexist*.txt' were found.'
Z = 'MATLAB:MOVEFILE:FileNotFound'
  3 件のコメント
Stephen23
Stephen23 2022 年 12 月 8 日
編集済み: Stephen23 2022 年 12 月 8 日
" However, I still do not manage to integrate the mentioned line to avoid interruption in the iteration when the "movefile" function does not find one of the requested files."
Because your code still does not return any output arguments from MOVEFILE.
Here are the modified lines of code:
[X,Y,Z] = movefile(fullfile(SourceFolder,'*_MT*'),fullfile(SourceFolder,[newParticipant,'_MT']));
[X,Y,Z] = movefile(fullfile(SourceFolder,'*_T1w*'),fullfile(SourceFolder,[newParticipant,'_T1w']));
[X,Y,Z] = movefile(fullfile(SourceFolder,'*_PD*'),fullfile(SourceFolder,[newParticipant,'_PD']));
% ^^^^^^^^^^ this is exactly what I showed in my answer.
julian gaviria
julian gaviria 2022 年 12 月 8 日
Oops....
A huge thanks @Stephen23
Best regards,

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeWeather and Atmospheric Science についてさらに検索

タグ

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by