How do I create a new folder each time I run a code?
古いコメントを表示
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 件のコメント
Walter Roberson
2019 年 12 月 16 日
What is the code for nextname() ?
Jay Vaidya
2019 年 12 月 16 日
編集済み: Stephen23
2019 年 12 月 16 日
Jay Vaidya
2019 年 12 月 16 日
採用された回答
その他の回答 (2 件)
Bjorn Gustavsson
2019 年 12 月 16 日
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 件のコメント
Jay Vaidya
2019 年 12 月 19 日
Bjorn Gustavsson
2019 年 12 月 19 日
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
2019 年 12 月 19 日
Yes. Let me ask how many until the problem I pointed out occurs?
Walter Roberson
2019 年 12 月 19 日
?? 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
2019 年 12 月 19 日
編集済み: Image Analyst
2019 年 12 月 19 日
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
カテゴリ
ヘルプ センター および File Exchange で MATLAB についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!