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