To change Current Folder to the folder of .m File

How can I change the current folder to folder of .m file in my code.
Possibly with cd command
Or any command I can indicate that my excel file is in same location as .m file.
e.g. code.m path folder\My excel file.xls

답변 (4개)

Image Analyst
Image Analyst 2013년 4월 17일
편집: Image Analyst 2013년 4월 17일

6 개 추천

Here's some code I got from Brett Shoelson of the Mathworks:
% Change the current folder to the folder of this m-file.
if(~isdeployed)
cd(fileparts(which(mfilename)));
end
Edit: Note that the isdeployed is important if you will be compiling and deploying your application. This let's it operate both for you, as the developer, and for your deployed application where it will skip the cd because doing cd like that in a deployed app can wreak havoc. If you won't be doing compiling, then you can do just the cd without the if.

댓글 수: 3

Diaa
Diaa 2020년 4월 10일
편집: Diaa 2020년 4월 10일
If I have a live script on the MATLAB online drive inside some subfolder, what should I write to change the working directory to that of the live script since
cd(fileparts(which(mfilename)))
doesn't work for live scripts on the online drive?
My workaround is to copy/paste your code inside an m-file in the same subfolder and call it at the very first line of my live script, however, I would like to have a neat solution.
This command that ran fine in my MATLAB R2015b, is not actually working in the newest R2022a!
EDIT:
Actually find the solution in an other answer
% Change the current folder to the folder of this m-file.
if(~isdeployed)
cd(fileparts(matlab.desktop.editor.getActiveFilename));
end
I do not think this command properly work for when I use 'Run Section'..

댓글을 달려면 로그인하십시오.

Diaa
Diaa 2021년 5월 15일

4 개 추천

For live scripts, @Qi Wang suggested using this:
fileparts(matlab.desktop.editor.getActiveFilename)
to get the full path of the active live script file.

댓글 수: 1

This works, but the problem is that most people expects code in .m file to work in .mlx and viceversa.
I think that this issue should be adressed by MATLAB's guys.
Best regards,
Javier

댓글을 달려면 로그인하십시오.

Florian
Florian 2018년 7월 13일

2 개 추천

mfile_name = mfilename('fullpath');
[pathstr,name,ext] = fileparts(mfile_name);
cd(pathstr);
Matt Kindig
Matt Kindig 2013년 4월 17일

0 개 추천

cd(which(fileparts('/path/to/your/file.m')))

카테고리

도움말 센터File Exchange에서 File Operations에 대해 자세히 알아보기

질문:

Afz
2013년 4월 16일

댓글:

2023년 7월 12일

Community Treasure Hunt

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

Start Hunting!

Translated by