Renaming Files based on a Folder Name in Sequence

11 visualizzazioni (ultimi 30 giorni)
Hi, I am trying to do the following: I have folders participant 1, participant 2, etc. I want to name the files xxxx-folder name. Each file name is different but begins with 0001_. How can I do this in a loop (for multiple folders)?
  2 Commenti
Akira Agata
Akira Agata il 2 Ott 2018
> I have folders participant 1, participant 2, etc. I want to name the files xxxx-folder name.
You mean, for example, files in the 'participant 1' folder shall be renamed to '0001_participant 1.***', '0002_participant 1.***',...and so on? ('***' is extension of each file)
Naomi Gaggi
Naomi Gaggi il 2 Ott 2018
Modificato: Naomi Gaggi il 2 Ott 2018
Yes, thanks - or it would even be helpful to just add participant 1 at the end of each file name

Accedi per commentare.

Risposta accettata

Akira Agata
Akira Agata il 2 Ott 2018
Thank you for the clarification. Then, the program would be something like this.
s = dir('./participant*/*.*');
prevDir = '';
for kk = 1:numel(s)
if ~s(kk).isdir
oldName = s(kk).name;
[~,~,ext] = fileparts(oldName);
[~,currDir] = fileparts(s(kk).folder);
if ~strcmp(s(kk).folder,prevDir)
pref = 1;
prevDir = s(kk).folder;
else
pref = pref + 1;
end
newName = sprintf('%04d_%s%s',pref,currDir,ext);
movefile(fullfile(s(kk).folder,oldName),fullfile(s(kk).folder,newName));
end
end

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by