Rename File in a Different Folder

Hey all,
I am trying to use the movefile command to rename a file using variables and current date.
If I use this code and the REPORT.txt is located in the working folder, it works absolutely fine:
movefile('REPORT.txt', fullfile(prjNo + 'REPORT'+ date +'.txt'));
However, the file I am trying to rename is located in a subfolder of the working folder. I have tried the following options but none of them works:
% Option 1:
movefile('OUT\REPORT.txt', fullfile(prjNo + 'REPORT'+ date +'.txt'));
% Option 2:
movefile(fullfile(workingfolder, + 'OUT\REPORT.txt'), fullfile(prjNo + 'REPORT'+ date +'.txt'));
Can someone point out where the problem is or offer an elegant alternative solution please?
Many thanks.

7 comentarios

Stephen23
Stephen23 el 4 de Nov. de 2022
Editada: Stephen23 el 4 de Nov. de 2022
movefile('REPORT.txt', fullfile(prjNo + 'REPORT'+ date +'.txt'));
% Is this ^^^^^^^^ a highly obfuscated way to avoid calling CHAR() ?
Why not just use SPRINTF or any other usual methods to convert numeric to text?
What is the name of the subfolder? (you used both "RUN" and "OUT" in your examples).
MATLAB_Soldier
MATLAB_Soldier el 4 de Nov. de 2022
I don't know any better way of doing it than fullfile.
Sorry about the confusion regarding the subfolder, it is called OUT. I have corrected the post.
Rik
Rik el 4 de Nov. de 2022
I don't think you fully understand how fullfile works. It will put your separate inputs together to form a valid path string, taking the difference between Unix/Linux/Mac and Windows into account.
You only provided a single input. Inputs in Matlab are not separated by the plus symbol, but with a comma symbol.
You should use sprintf to create the name of the file, then use fullfile to combine the file name and folder names.
MATLAB_Soldier
MATLAB_Soldier el 4 de Nov. de 2022
Editada: MATLAB_Soldier el 4 de Nov. de 2022
Thanks. That is correct. I may not understand it fully yet.
I have come up with this based on your input guys:
workingfolder=pwd;
DateFormat = 'yyyy.mm.dd'; % Define date format
date=datestr(now,DateFormat);
newfilename = strcat(prjNo,'_REPORT_',date,'.txt');
movefile(fullfile(workingfolder,'OUT','REPORT.txt'),fullfile(workingfolder,'OUT',newfilename))
It works but I am wondering if there is a better way to go about this problem?
Stephen23
Stephen23 el 4 de Nov. de 2022
Is the variable prjNo numeric or text ?
MATLAB_Soldier
MATLAB_Soldier el 4 de Nov. de 2022
It is text.
Rik
Rik el 4 de Nov. de 2022
I personally would prefer sprintf instead of strcat, but this is equivalent to what I would suggest.
Note that explicitly including the working directory is not required.

Iniciar sesión para comentar.

 Respuesta aceptada

Stephen23
Stephen23 el 4 de Nov. de 2022
Editada: Stephen23 el 4 de Nov. de 2022
new = fullfile(prjNo + 'REPORT'+ date +'.txt'); % odd use of FULLFILE.
movefile(fullfile('.','OUT','REPORT.txt'),fullfile('.','OUT',new))
Note that '.' refers to the current directory.

Más respuestas (0)

Categorías

Más información sobre File Operations en Centro de ayuda y File Exchange.

Productos

Versión

R2021b

Preguntada:

el 4 de Nov. de 2022

Comentada:

Rik
el 4 de Nov. de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by