Copy file from one directory to another
    54 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
Hi, 
So I am using this piece of code to copy some files with similar names from several destination paths (e.g. file03431314, file6767464363, etc).
When I use 'file*' it assumes it is a directory, which is not... 
When I actualy copy and paste the filename, e.g. 'file03431314', it works fine.
PS: the file that I want to copy does not have an extension.
How can I fix this?
Thanks
p1 = 'filepath'
% Copying file from respective path
pdest = 'mydestinationpath';
filename = 'file*';
source = fullfile(p1,filename);
destination = fullfile(pdest,filename);
copyfile(source,destination)
% Renaming
oldname = filename;
newname = '1_file.txt'; 
copyfile(oldname,newname);
% Deleting old file
delete(filename)
1 comentario
Respuestas (3)
  Jan
      
      
 el 17 de Dic. de 2018
        If there are really problems with the copy of a file pattern, do it explicitly with a loop:
psource = 'filepath'
pdest   = 'mydestinationpath';
pattern = 'file*';
sourceDir = dir(fullfile(psource, pattern));
sourceDir([sourceDir.isdir]) = [];  % Files only
for k = 1:numel(sourceDir)
    sourceFile = fullfile(psource, sourceDir(k).name);
    destFile   = fullfile(pdest, sourceDir(k).name);  % Or another name?
    movefile(sourceFile, destFile);
end
0 comentarios
  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')
0 comentarios
  Omer Yasin Birey
      
 el 17 de Dic. de 2018
        Maybe you can get parts of the filename by using
[filepath,name,ext] = fileparts(file);
and after that you can use directly the name of the file instead of this "filename = 'file*';"
[filepath,name,ext] = fileparts(file);
filepath = 
'H:\user4\matlab'
name = 
'myfile'
ext = 
'.txt'
once you get the name of the file by this, you can use it in your code. 
2 comentarios
  Omer Yasin Birey
      
 el 17 de Dic. de 2018
				filename = 'file';
numbers = [1 2 3 4 5 1234324123 03431314 3431314123123 ..... ]
for i = 1:length(k)
    nFile{i} = sprintf('%s_%d',filename,numbers(i));
end
Ver también
Categorías
				Más información sobre File Operations en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



