我想搜索所有.doc
文件的目录和子目录,并使用 MatLab 将它们全部压缩到一个文件中。如果我使用zip()
matlab 函数,它只允许一个根目录。
ZIP(ZIPFILENAME, FILES, ROOTDIR)
.
1)如何递归搜索子目录?
2) 如何将所有 zip 文件添加到一个文件夹中?
最好搜索并将所有.doc
文件移动到临时文件夹中,然后从该位置压缩它们吗?
首先,dos(...)
用于所有 .doc 文件的目录,包括所有子目录(选项/S
),但仅显示文件名,不显示其他信息(选项/B
)。第一个输出参数是返回的状态,第二个输出参数是命令行返回的字符串:
[~, filenamesFromDos] = dos('dir *.doc /B/S');
其次,从该命令中提取文件名作为元胞数组。文件名由换行符 ( \n
) 字符分隔,路径可能包含空格,因此'Whitespace',''
:
filenames = textscan(filenamesFromDos,'%s','Delimiter','\n','Whitespace','');
filenames
然后是 a <1x1 cell>
,包含一个<Nx1 cell>
文件名字符串。有了这个<Nx1 cell>
我们可以调用内置的matlab函数zip(...)
:
zip('zip_file.zip',filenames{1});
完毕。