Copy file to a new folder

18 visualizaciones (últimos 30 días)
Jason
Jason el 7 de Mzo. de 2016
Respondida: Prajwol Tamrakar el 27 de Mayo de 2020
Under a folder, I have a lot of .mat. "19800101.mat", "19800102.mat", ......."19800201.mat", "19800202.mat", ......"19801201.mat".... I want to copy "19800101.mat", "19800102.mat", and copy others which also belong to January to a new folder, and display this new folder directory. February to a another new folder, and so on. Thanks.

Respuesta aceptada

Walter Roberson
Walter Roberson el 8 de Mzo. de 2016
destdirs = {'January', 'February', 'March', ... 'December'};
ndests = length(destdirs);
for K = 1 : ndests
if ~exist(destdirs{K}, 'dir'); mkdir(destdirs{K}); end
end
dinfo = dir('*.mat');
filenames = {dinfo.name};
%remove filenames that are not a 4 digit year followed by a 2 digit month followed by a
%2 digit day followed by .mat. Years starting in 0, 1, or 2 are accepted with this check
namebad = cellfun(@isempty, regexp(filenames, '[012]\d\d\d[01]\d\d\d\.mat$') );
filenames(namebad) = [];
nfiles = length(filenames);
for K = 1 : nfiles
thisfile = filenames{K};
monthnum = sscanf(thisfile, '%*4d%2d', 1);
if monthnum > ndests
fprintf('File has invalid month number, skipping "%s"\n', thisfile);
else
destdir = destdirs{monthnum};
copyfile( thisfile, destdir );
end
end
  4 comentarios
Jason
Jason el 8 de Mzo. de 2016
Thank you so so so much. It works for me now.
Walter Roberson
Walter Roberson el 8 de Mzo. de 2016
Please click to Accept the answer.

Iniciar sesión para comentar.

Más respuestas (2)

John BG
John BG el 8 de Mzo. de 2016
Editada: John BG el 8 de Mzo. de 2016
Hi Jason
one way to copy files is with command dos
path1='put here full destination path' % for instance D:\Documents\backup\'
dos('copy file_name.mat path1')
If you find this answer of any help solving your question, please click on the thumbs-up vote link,
thanks in advance
John
  2 comentarios
Jason
Jason el 8 de Mzo. de 2016
Thanks. But I do not think your code cannot work.
Jan
Jan el 8 de Mzo. de 2016
MAtlab's copyfile is more direct and faster than starting a DOS command. If there is really a reason to call DOS, use:
dos(['copy file_name.mat ', path1])

Iniciar sesión para comentar.


Prajwol Tamrakar
Prajwol Tamrakar el 27 de Mayo de 2020
This issue of copying file to another directory is possibly due to "ready only access". Use 'f' option to override the read-only status of the destination folder.
copyfile(SourceFile, DestinyFile, 'f')

Categorías

Más información sobre Dialog Boxes en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by