1

背景(読む必要はありません)

私は仕事のためにMSオフィスファイルをいじっています(任意の長さのExcelおよびPowerPointファイルの生成を自動化する最も簡単で簡単な方法を見つけようとしています)。実際の Excel ファイルは、ファイル名に .xlsx が追加された zip アーカイブであるため、それらを解凍し、xml を編集し、再圧縮し、OpenOffice がまだそれらを読み込めるかどうかを確認しました。

ただし、(ありがたいことに、それほど多くのテストを行ったわけではありませんが)デフォルトでは、bash(または少なくとも私のMac)の「zip」コマンドは、v1の解凍のみを必要とする形式でファイルを圧縮していることに気付きました.0 を解凍しますが、通常の Excel ファイルは解凍に v2.0 が必要な方法で圧縮されます。これが問題であることを確認するには、正常に読み込まれたことがわかっている Excel ファイルを圧縮および解凍し、それを読み込もうとしました。OpenOffice は不満だった。

したがって、Excel とまったく同じようにファイルを zip にする必要があることはわかっていますが、それを実現する方法はわかりません。私は自分のコンピュータに zip バージョン 3 を持っているので、zip/unzip のリリース サイクルが同期されていれば可能だと思いますが、man ページにはすぐに解決策と思われるものは何もありませんでした。

編集: そして zip -9 (これは zip -h が zip に「圧縮を改善する」ように指示するのに役立つと言っています) は、まだ v1.0 のみを抽出する必要があります。


質問:

解凍するために unzip v2.0 が必要になるような方法で zip でファイルを圧縮することを bash で指定するにはどうすればよいですか?

4

1 に答える 1

1

多くの場合、異なるバージョンで生成された圧縮ファイル間の非互換性の理由は、使用されている圧縮アルゴリズムです。ファイルが zip 1.0 に存在しないアルゴリズムで圧縮されている場合、表示されている非互換性が発生します。

zip ユーティリティのマニュアル ページを見て、使用する圧縮の種類を指定するオプションがあるかどうかを確認してください。ある場合は、Excel から作成された既存のファイルを見て、どのような圧縮アルゴリズムで圧縮されているかを調べて、それを使用します。

私の Linux システムでは、zip は「これは Zip 2.31 (2005 年 3 月 8 日)、Info-ZIP です」と報告し、圧縮アルゴリズムを指定するオプションがありません。私の Windows システムでは、7-zipにオプションがあり、Mac バージョンも利用できるようです。zip ユーティリティがそのオプションをサポートしていない場合は、それを試すことができます。

于 2012-06-21T16:56:33.793 に答える