我有一个名为" Photos"这是当前目录的子文件夹。在该文件夹中,有四个子文件夹,名称为" Order1"," Order2", " Order3"," Order4"。我试图使用循环打开这些子文件夹。
以下代码无效。
for i=1:4
current_path=pwd;
cd(current_path');
cd('Photos\Order%d',i);
end
答案 0 :(得分:2)
这里有很多问题在同一时间发生。
主要问题是您每次都在循环中更改目录,但是也获取当前目录(pwd
)的值时间。该目录不会自动重置为回到循环顶部时的位置。我认为您希望current_path
成为启动的文件夹,并且对于所有迭代都是相同的。
您需要使用sprintf
或类似内容来创建“OrderN”文件夹名称。 cd
不知道如何处理您尝试使用的format specifier。
在连接文件路径时,总是使用fullfile
。周期。
您应该尽可能使用绝对路径来消除对当前目录的依赖。
您真的是否需要更改工作目录?如果您尝试在这些文件夹中加载文件,请考虑将绝对文件路径用于文件本身而不是更改文件夹。
如果 以这种方式执行此操作,请务必将路径重置回循环结束时的位置。没有什么比运行代码更糟糕的了,最终的目录与你调用它时的目录不同。
要真正使代码正常工作,我们可以做这样的事情。但考虑到上述所有要点(特别是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)