MATLAB Answers

0

is it possible to copy a file on itself?

Asked by Idin Pushkin on 5 Apr 2019
Latest activity Commented on by Idin Pushkin on 6 Apr 2019
hello
i have some files in current folder which were copieed here from other folder. i have changed content of some of them in the original folder and now i want to copy them again to the current folder. but it says u cant copy a file or directory onto itself.
is there anyway for doing this?
thanks

  0 Comments

Sign in to comment.

Tags

3 Answers

Answer by Walter Roberson
on 6 Apr 2019
 Accepted Answer

[file,path,indx] = uigetfile( ...
{'*.DATA;*.PVO;*.PVP;*.PVI;*.slx;*.INC','Eclipse Files (*.DATA,*.INC)';
'*.PVO;*.PVP;*.PVI;*.INC','PVTi files (*.PVO,*.PVP,*.PVI)';...
'*.*', 'All Files (*.*)'},'Select a File','MultiSelect', 'on');
if isequal(file,0)
disp('User selected Cancel');
else
if ischar(file); file = {file}; end
file(ismember(file, {'.', '..'})) = [];
file = fullfile(path, file);
for i = 1:length(file)
copyfile(file{i});
end
end

  1 Comments

great thanks, Walter. i appreciate for correctimg the code. i benefit and learned too much.

Sign in to comment.


Answer by dpb
on 5 Apr 2019

That isn't copying a file onto itself; there's nothing to prevent you doing what you want.
Your copyfile command isn't referencing the alternate folder in the source file it would appear by the error; however, you neglected to show us the command as you wrote it so we can't do more than surmise the cause.
If your current working directory is the target, then
otherdir='c:\that\otherdirectory';
copyfile(fullfile(otherdir,filename),filename)
should have no issues. If you are in the other directory when trying, then
targetdir='c:\that\targetlocation';
copyfile(fullfile(targetdir,filename),filename)
To be sure, wherever you are, use fully-qualified file names for both source and target.

  0 Comments

Sign in to comment.


Answer by Idin Pushkin on 6 Apr 2019

i used this code:
clc;
[file,path,indx] = uigetfile( ...
{'*.DATA;*.PVO;*.PVP;*.PVI;*.slx;*.INC','Eclipse Files (*.DATA,*.INC)';
'*.PVO;*.PVP;*.PVI;*.INC','PVTi files (*.PVO,*.PVP,*.PVI)';...
'*.*', 'All Files (*.*)'},'Select a File','MultiSelect', 'on');
if isequal(file,0)
disp('User selected Cancel');
else
end
[m,n]=size(file);
if ischar(file)
copyfile(fullfile(path,file));
elseif iscell(file)
for i=1:n
copyfile(fullfile(path,file{i}));
k=strfind(file{i},'.DATA');
end
else
end
on multiselect mode, suppose i have all files i wanted in my current directory and i have made some changes to these files in the original folder so i want to replace them with the updated files without changing the name of files. in this case usually i have more than one extensions. i use the '.All' extension to do so and it gives:
'Error using copyfile
Cannot copy or move a file or directory onto itself.
Error in testc (line 14)
copyfile(fullfile(path,file));'
there is no problem in case i use files own extension from drop down menu to copy it evenif it exists.

  2 Comments

You copyfile() with only one argument. Which directory do you want the files to end up in?

Sign in to comment.



Translated by