Copy file from one directory to another
    54 次查看(过去 30 天)
  
       显示 更早的评论
    
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 个评论
回答(3 个)
  Jan
      
      
 2018-12-17
        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 个评论
  Prajwol Tamrakar
 2020-5-27
        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 个评论
  Omer Yasin Birey
      
 2018-12-17
        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 个评论
  Omer Yasin Birey
      
 2018-12-17
				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
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 File Operations 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



