在循环中打开多个子文件夹

时间:2016-03-11 23:01:40

标签: matlab

我有一个名为" Photos"这是当前目录的子文件夹。在该文件夹中,有四个子文件夹,名称为" Order1"," Order2", " Order3"," Order4"。我试图使用循环打开这些子文件夹。

以下代码无效。

for i=1:4
    current_path=pwd;
    cd(current_path');
    cd('Photos\Order%d',i);
end

1 个答案:

答案 0 :(得分:2)

这里有很多问题在同一时间发生。

  1. 主要问题是您每次都在循环中更改目录,但是获取当前目录(pwd的值时间。该目录不会自动重置为回到循环顶部时的位置。我认为您希望current_path成为启动的文件夹,并且对于所有迭代都是相同的。

  2. 您需要使用sprintf或类似内容来创建“OrderN”文件夹名称。 cd不知道如何处理您尝试使用的format specifier

  3. 在连接文件路径时,总是使用fullfile。周期。

  4. 您应该尽可能使用绝对路径来消除对当前目录的依赖。

  5. 真的是否需要更改工作目录?如果您尝试在这些文件夹中加载文件,请考虑将绝对文件路径用于文件本身而不是更改文件夹。

  6. 如果 以这种方式执行此操作,请务必将路径重置回循环结束时的位置。没有什么比运行代码更糟糕的了,最终的目录与你调用它时的目录不同。

  7. 要真正使代码正常工作,我们可以做这样的事情。但考虑到上述所有要点(特别是4-5),我强烈考虑采用不同的方法。

    startpath = pwd;
    
    for k = 1:4
        folder = fullfile(startpath, 'Photos', sprintf('Order%d', k));
        cd(folder)
    end
    
    % Set the current directory to what it was before we started
    cd(startpath)