Windows 在matlab中删除路径和子路径

Windows 在matlab中删除路径和子路径,windows,matlab,svn,path,Windows,Matlab,Svn,Path,我一直在寻找一种简单的方法从matlab中删除一组路径。我正在使用一个相当大的程序,它的目录中包含许多路径。我还使用svn版本处理,并且使用了许多分支,这些分支通常包含一些相同的函数,一些经过修改,一些只存在于一个分支上 问题是,当我为一个分支设置路径(使用自定义函数),然后想将目录更改为另一个路径时,第一部分很难删除。我用过 rmpath(path1,path2,...); 但是,这需要手动键入每条路径。由于所有路径都有一个公共的基本目录,我想知道,是否仍然可以使用通配符从路径中删除完整的目

我一直在寻找一种简单的方法从matlab中删除一组路径。我正在使用一个相当大的程序,它的目录中包含许多路径。我还使用svn版本处理,并且使用了许多分支,这些分支通常包含一些相同的函数,一些经过修改,一些只存在于一个分支上

问题是,当我为一个分支设置路径(使用自定义函数),然后想将目录更改为另一个路径时,第一部分很难删除。我用过

rmpath(path1,path2,...);

但是,这需要手动键入每条路径。由于所有路径都有一个公共的基本目录,我想知道,是否仍然可以使用通配符从路径中删除完整的目录?我使用windows计算机。

不支持通配符。您可以编写自己的Matlab函数来添加和删除项目中的所有路径,或者支持regexp匹配。将该部分作为项目本身很方便,因此它可以知道需要添加或删除的所有目录,并在必要时执行其他库初始化工作。

尝试使用genpath。给定基本目录作为输入,genpath返回该基本目录加上所有子目录,递归

rmpath(genpath(base_directory));

genpath答案适用于
fragment*
案例,但不适用于
*fragment*
案例

笨重,但有效:

pathlist = path;
pathArray = strsplit(pathlist,';');
numPaths = numel(pathArray);
for n = 1:numPaths
    testPath = char(pathArray(n))
    isMatching = strfind(testPath,'pathFragment')
    if isMatching
        rmpath(testPath);
    end
end

我有一个简短的回答:

function rmpathseb(directory)

% Retrieve the subfolders
folders = dir(directory);

% Remove folders one by one
% The first two are '.' and '..'
for i = 3 : length(folders);

    rmpath([pwd , '\' , directory , '\' , folders(i).name]);

end

end

真遗憾,外卡在这里会有用的。无论如何,谢谢你。我不完全确定这是否会删除所有子路径。自从我处理这个问题已经很久了,但据我所知,主要的问题是子文件夹也可以由子文件夹组成。接受的答案将创建一个递归目录树,然后
rmpath
将删除所有目录。