Converting cell components into strings for moving files

6 views (last 30 days)
I am working on a code that helps me move files that i choose from one directory to another . The code that i have is as follows.
[filename, pathname,filterindex] = uigetfile('*.m', 'Select the Matlab files to move', 'MultiSelect', 'on')
source = strcat(pathname, filename)
destination = uigetdir
opt_choose = inputdlg('What do you want to do:/n 1. Move all files or 2. Move one file',...
'Specify your interest in the function', [1,30])
option = str2num(opt_choose{:});
if option < 1||option >2
%This is to make sure that the input is only 1 or 2.
errordlg('This is not an option. You have only 2 more attempts')
end
if option ==1
movefile(source,destination)
end
The error that i get is as follows :
Error using movefile Argument must contain a string.
Error in move_it (line 13) movefile(source,destination)
I believe it is because the files that i am selecting, which are multiple files, are being stored as cell components. When i check for the value of source in the workspace, it is as follows,
source = 'abcd. m' 'xyzd.m'
How could i change this to a string so that i could pass it into the if function as a source so that it wont give me an error.
Any help would be appreciated.

Accepted Answer

Nobel Mondal
Nobel Mondal on 9 Oct 2015
Edited: Nobel Mondal on 9 Oct 2015
Replace the line calling 'movefile' by a cell-function. Like this -
cellfun(@(C) movefile(C, destination), source)
  2 Comments
Sanwal Yousaf
Sanwal Yousaf on 11 Oct 2015
just to clarify. What is C representing in this function? is that the source or something else?
Sanwal Yousaf
Sanwal Yousaf on 11 Oct 2015
Never mind. Apologies. This works like a charm. Thanks a lot.

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 9 Oct 2015
movefile() accepts only the name of one file (or directory) at a time. If you have multiple files then you will need to movefile() them one by one.
Note: you should use fullfile() instead of strcat() to construct the path.
  3 Comments
Walter Roberson
Walter Roberson on 11 Oct 2015
Use sprintf() to construct a string that is an operating system command and system() the command.
Sanwal Yousaf
Sanwal Yousaf on 11 Oct 2015
I got it. i was making a syntax error in my script as well. However, fullfile worked like a charm. Thanks a lot!

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!