我想搜索所有.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});
完毕。