MATLAB,Octave:使用包含空格的文件夹名称

TJ1*_*TJ1 1 string directory matlab octave

在MATLAB中,实际上是Octave,我想找到当前文件夹中所有子文件夹的列表,所以我使用它:

subFolder = dir;
Run Code Online (Sandbox Code Playgroud)

这将提供当前文件夹中所有子文件夹的列表.这将返回一个结构,其中一个元素是名称.假设我有两个带有名称subfolder 1A和的子文件夹subfolder 1B.

现在我想去这些文件夹.然后我这样做:

cd subFolder(1).name
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

error: subFolder(1).name: No such file or directory
Run Code Online (Sandbox Code Playgroud)

如果我这样做:

cd "subfolder 1A"
Run Code Online (Sandbox Code Playgroud)

一切正常.解决办法是什么?

gno*_*ice 5

在这种情况下,文件夹名称中的空格是红色鲱鱼.这不是问题的根源.实际问题是你需要cd使用函数语法而不是命令语法来调用函数(即使用括号; 这里是相关问题):

cd(subFolder(1).name);
Run Code Online (Sandbox Code Playgroud)

当您使用命令语法时,subFolder(1).name它本身被视为字符串参数cd(即它正在寻找一个名为的文件夹'subFolder(1).name').用函数的语法,包含在字符串的结构阵列字段被用作参数.

为了使您的代码更健壮,您还可以使用'folder'返回的字段dir:

cd(fullfile(subFolder(1).folder, subFolder(1).name));
Run Code Online (Sandbox Code Playgroud)

无论您当前所在的目录如何,都将转到所需的文件夹,因为它指定了绝对路径而不是部分路径(相对于当前目录).