Filter löschen
Filter löschen

Naming the folders with a counter

1 Ansicht (letzte 30 Tage)
Rohan Maharjajn
Rohan Maharjajn am 27 Aug. 2017
Bearbeitet: Stephen23 am 27 Aug. 2017
I used the following code to move the generated files to a new folder for every new execution.It works for the command interface .But since I am trying to create a GUI and '.exe' file for the codes, I am having problem creating a new folder with every execution as the counter value is not updated in the program memory.
c=xlsread('counter.xlsx');
f=c(1)+1;
newdir = sprintf('Problem_%d', c);
mkdir(fullfile(newdir))
movefile ('BendingMoment.png', newdir);
movefile ('ShearForce.png', newdir);
movefile ('Stress.png', newdir);
movefile ('shaft_data.xlsx', newdir);
xlswrite('counter.xlsx',f);

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 27 Aug. 2017
Bearbeitet: Walter Roberson am 27 Aug. 2017
You have to ask yourself which directory you are in at the time you execute the xlsread() and the other statements. In a compiled executable, chances are that you are in ctfroot() and that all action is taking place there.
If the original counter.xlsx is saved as part of the compiled executable, then each time the executable were re-expanded then the file would get overwritten.
You should probably be considering detecting the directories already present instead of relying on a counter like that. Detecting directories would be a little easier if you used zero-padded counters, such as Problem_00018 instead of Problem_18 . For that,
newdir = sprintf('Problem_%05d', c);
I note that you are using movefile(): if those worked, then the files would not be there for a second execution. Perhaps you should be using copyfile() ?
  1 Kommentar
Stephen23
Stephen23 am 27 Aug. 2017
Bearbeitet: Stephen23 am 27 Aug. 2017
"You should probably be considering detecting the directories already present instead of relying on a counter like that."
I have no idea if it works with the MATLAB coder, but my FEX submission does exactly that: checks if files/folders exist, and returns the next unused name:
It also correctly handles any leading zeros in the existing names, and lets the user define if the next name should include leading zeros as well.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Stability Analysis finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by