1

すべてのファイルのディレクトリとサブディレクトリを検索し、.docMatLab を使用してそれらすべてを 1 つのファイルに圧縮したいと考えています。matlab 関数を使用するzip()と、1 つのルート ディレクトリしか許可されません。 ZIP(ZIPFILENAME, FILES, ROOTDIR).

1) サブディレクトリを再帰的に検索するにはどうすればよいですか?

2) すべての zip ファイルを 1 つのフォルダーに追加するにはどうすればよいですか?

.docすべてのファイルを検索して一時フォルダに移動し、その場所から圧縮するのが最善でしょうか?

4

1 に答える 1

1

まず、dos(...)すべてのサブディレクトリを含むすべての .doc ファイルに対して to dir を使用しますが (オプション/S)、ファイル名のみを表示し、追加情報は表示しません (オプション/B)。最初の出力引数は返されたステータスで、2 番目の出力引数はコマンド ラインで返された文字列です。

[~, filenamesFromDos] = dos('dir *.doc /B/S');

次に、そのコマンドからファイル名を cell 配列として抽出します。ファイル名は改行 ( \n) 文字で区切られ、パスにはスペースが含まれる可能性があるため、次のようになり'Whitespace',''ます。

filenames = textscan(filenamesFromDos,'%s','Delimiter','\n','Whitespace','');

filenamesは、ファイル名文字列の<1x1 cell>を含むです。<Nx1 cell>これにより<Nx1 cell>、組み込みの matlab 関数を呼び出すことができますzip(...)

zip('zip_file.zip',filenames{1});

終わり。

于 2012-08-23T06:32:30.893 に答える