2016-10-12 2 views
1

현재 로컬 컴퓨터에 저장되어있는 일련의 코드가 있습니다. "Resources"라는 폴더와 "src"라는 폴더가 있습니다. "리소스"에서 파일을 호출하는 "src"에는 "main.m"이라는 메인 스크립트가 실행되어야합니다.MATLAB - 현재 경로를 가져 와서 다른 폴더로 이동하는 데 사용합니다.

이 모든 것을 새 컴퓨터에 복사하면 경로가 변경되고 MATLAB에서 더 이상 "리소스"를 찾지 못할 수도 있습니다. 나는 그것이 "main.m"에 비례한다는 것을 안다. 나는 한 수준 위로 올라가서 "Resources"로 올라갈 필요가있다.

"리소스"를 가리 키도록 MATLAB을 얻는 가장 좋은 방법은 무엇입니까?

나는 현재 main.m.의 경로를 제공

P = mfilename('fullpath') 

의 라인을 따라하려합니다 이제, 여기에서 한 폴더를 위로 이동 한 다음 "리소스"로 이동하겠습니다. 또는 더 좋은 방법이 있다면 알려 주시기 바랍니다.

마지막으로 "Resources1", "Resources2"등 여러 폴더에서 작동하도록 MATLAB을 확장하여 올바른 폴더로 이동할 수 있어야합니다.

답변

3

당신은 그것을 좋아 얻을 수 있습니다 :

fullfile(fileparts(mfilename('fullpath')), '..', 'Resources'); 

설명 :

  • mfilename('fullpath') 확장자없이 호출이 발생하는 M-파일의 전체 경로와 이름을 반환합니다
  • fileparts은 전달 된 파일의 경로 (포함하는 디렉토리 만)
  • fullfile 전달 된 폴더 이름에서 전체 디렉토리 지정을 구축 할 것입니다 (참고 : '..' 항상 상위 디렉토리 의미)이 들어있는 디렉토리의 형제 디렉토리를 가져 오는 함수를 작성하는 것은 매우 간단이를 바탕으로

을 파일 :

getSiblingOfParentDirectory.m

function siblingDirPath = getSiblingOfParentDirectory(filepath, siblingDirName) 
    siblingDirPath = fullfile(fileparts(filepath), '..', siblingDirName); 
end 
다음

M-파일에서 사용하는 :

for i = 1:3 
    disp(getSiblingOfParentDirectory(mfilename('fullpath'), ['Resources', num2str(i)])); 
end 

샘플 출력 :

D:\pathtest\Resources1 
D:\pathtest\Resources2 
D:\pathtest\Resources3 
1

다음과 같은 시도 할 수 있습니다 : 폴더 물론 & 파일의 이름에 완전히 의존

ResourcesFolder = strrep(mfilename('fullpath'), 'src\main', 'Resources'); 
addpath(ResourcesFolder); 
%%Your code here where you need those files 
rmpath(ResourcesFolder); 

. 기본적으로 "addpath"를 사용하면 검색 경로에 추가하여 언급 된 디렉토리의 파일에 액세스 할 수 있으며 "rmpath"는 정반대입니다.폴더 '자원', 다음 변경

한 수준 위로 이동
cd ..\Resources 

, 검색 : 당신은 말 그대로 하나 개의 레벨 업에 존재하는 폴더로 이동하려면

또한, 다음을 실행할 수 있습니다 그 폴더의 현재의 디렉토리

관련 문제