How do I create a new folder each time I run a code?
Mostrar comentarios más antiguos
I want to make a new folder each time I run my code.
Example:
If there is a folder named 'newFolder', then generate newFolder1 after running once.
If there is a folder named 'newFolder7', then generate newFolder8 after running once.
In general, if there is a folder named 'newFolderx', then generate newFolderx+1 after running once.
I am using this code below: (important part is the nextname fumction usage)
mkdir("C:/Users/vaidy/Desktop/JAY/Labwork/Models for devices/FeFETIMT model/MATLAB code/Voltage source/25x25/" + nextname('newFolder','1')).
mkdir("C:/Users/vaidy/Desktop/JAY/Labwork/Models for devices/FeFETIMT model/MATLAB code/Voltage source/25x25/" + nextname('newFolder','1')).
But this generates a new folder only for the first time, and later it says that the folder already exists.
3 comentarios
Walter Roberson
el 16 de Dic. de 2019
What is the code for nextname() ?
Jay Vaidya
el 16 de Dic. de 2019
Editada: Stephen23
el 16 de Dic. de 2019
Jay Vaidya
el 16 de Dic. de 2019
Respuesta aceptada
Más respuestas (2)
Bjorn Gustavsson
el 16 de Dic. de 2019
This is easily solved:
dirname = fullfile(path_2_root_dir,sprintf('NewFolder-%s',datestr(now,'yyyymmdd-HHMMSS')));
mkdir(dirname)
Gives you an easy enough time to separate directories, with the added bonus that you explicitly have the create-time in the name, and this will give you unique numbers that sort nicely.
HTH
5 comentarios
Jay Vaidya
el 19 de Dic. de 2019
Bjorn Gustavsson
el 19 de Dic. de 2019
Yes, I know. And you still go for a cludgy solution where you will have to take extra steps to zero-pad the ID-numbers? (Which we all know is at best a temporary solution because we'll run into the case where we will generate just enough names to fill up the available space plus a few extra...)
"And you still go for a cludgy solution where you will have to take extra steps to zero-pad the ID-numbers?"
Ouch, that hurt... but wait, what is that in the nextname documentation: it states that leading zeros can be specified quite simply in the suffix, for example if you want four digits:
nextname(fullfile(D,'newFolder'),'0001')
% ^^^^ specifies four digits!
The number will be padded with zeros to ensure that it has atleast as many digits as requested.
Unless of course you really consider adding a few leading zeros to the suffix as painfully difficult "extra steps", a bit like reading documentation...
Bjorn Gustavsson
el 19 de Dic. de 2019
Yes. Let me ask how many until the problem I pointed out occurs?
Walter Roberson
el 19 de Dic. de 2019
?? There are no ID-numbers mentioned in the original question. Also, the original author specifically indicated that the second folder was to be newFolder1 -- not, for example, newFolder0001 so padding with zeros is not desired by the original poster (and not necessary for Stephen's FEX contribution.)
Image Analyst
el 19 de Dic. de 2019
Editada: Image Analyst
el 19 de Dic. de 2019
Here's another way:
parentFolder = pwd; % Wherever you want
prefix = 'newFolder'; % Whatever you want.
baseFolderName = sprintf('%s1', prefix);
newFolder = fullfile(parentFolder, baseFolderName);
maxIterations = 5000; % Whatever. However many times you want to try before giving up.
counter = 1;
while isfolder(newFolder) && counter <= maxIterations
baseFolderName = sprintf('%s%d', prefix, counter); % Can use %3.3d if you want leading zeros.
newFolder = fullfile(parentFolder, baseFolderName);
counter = counter + 1;
end
if counter >= maxIterations
% Could not find a suitable folder name. Alert the user.
message = sprintf('Could not find a folder name after trying %d times', maxIterations);
uiwait(errordlg(message));
else
% Found a good name so make the folder.
mkdir(newFolder);
end
Categorías
Más información sobre MATLAB en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!