is there a code to open and run all m files in a folder?
31 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Itzik Ben Shabat
el 22 de Mzo. de 2014
Comentada: Image Analyst
el 25 de Mzo. de 2014
Hi, I have multiple (about 50) different .m files in a folder. I wish to open and run each and every one of them using a matlab script. the output of this script would be a logical vector indicating which files had errors and which did not.
so is there a matlab code/ function that can open, run and check if there were run errors? thanks
0 comentarios
Respuesta aceptada
Jan
el 22 de Mzo. de 2014
What about this:
folder = 'C:\YourFolder';
list = dir(fullfile(folder, '*.m');
nFile = length(list);
success = false(1, nFile);
for k = 1:nFile
file = list(k).name;
try
run(fullfile(folder, file));
success(k) = true;
catch
fprintf('failed: %s\n', file);
end
end
3 comentarios
Jos (10584)
el 25 de Mzo. de 2014
You can check if the mfile is the current file using MFILENAME, as in,
if ~strcmpi(fullfile(folder, file), mfilename('fullpath'))
...
Image Analyst
el 25 de Mzo. de 2014
I don't know what "the figure code" is. Do you mean if the m-file has an associated .fig file? Or do you mean if the word "figure" appears inside the m-file, especially as a statement/function call? Anyway, to see if a certain string appears in another string, you can use strfind().
Más respuestas (4)
Jakob Sørensen
el 22 de Mzo. de 2014
I don't know if there is a built-in function, but I think you could fairly easy make one yourself. Using the command dir you can acquire all the file names in a folder, then just loop through them, running them one-by-one.
0 comentarios
Andy Campbell
el 24 de Mzo. de 2014
Editada: Andy Campbell
el 24 de Mzo. de 2014
To expand on per's answer, in R2014a you can do this using parameterized tests:
classdef TestAllFiles < matlab.unittest.TestCase
properties(TestParameter)
file = getListOfFiles;
end
methods(Test)
function testFileDoesNotError(testCase, file)
run(fullfile('C:\YourFolder', file));
end
end
end
function files = getListOfFiles
list = dir(fullfile('C:\YourFolder', '*.m'));
files = {list.name};
end
Then you can run them all and get your results:
result = runtests('TestAllFiles')
logicalVector = [result.Passed];
per isakson
el 22 de Mzo. de 2014
Editada: per isakson
el 22 de Mzo. de 2014
Yes, there is
This is much more than than you are asking for, however, it well worth to start applying Unit Testing. See http://software-carpentry.org/v4/test/ and http://stackoverflow.com/questions/67299/is-unit-testing-worth-the-effort
And see:
0 comentarios
Ver también
Categorías
Más información sobre Variables en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!