is it possible to copy a file on itself?

2 Ansichten (letzte 30 Tage)
Idin Pushkin
Idin Pushkin am 5 Apr. 2019
Kommentiert: Idin Pushkin am 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

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 6 Apr. 2019
[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 Kommentar
Idin Pushkin
Idin Pushkin am 6 Apr. 2019
great thanks, Walter. i appreciate for correctimg the code. i benefit and learned too much.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

dpb
dpb am 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.

Idin Pushkin
Idin Pushkin am 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 Kommentare
Walter Roberson
Walter Roberson am 6 Apr. 2019
You copyfile() with only one argument. Which directory do you want the files to end up in?
ali mohebi
ali mohebi am 6 Apr. 2019
current directory

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Filename Construction finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by