1

背景(无需阅读)

我正在修改 MS office 文件以供工作(试图找出最快、最简单的方法来自动生成任意长度的 excel 和 powerpoint 文件)。由于实际的 excel 文件只是在文件名后附加了 .xlsx 的压缩档案,因此我一直在解压缩它们,编辑 xml,重新压缩它们,并查看 OpenOffice 是否仍然可以加载它们。

但是,我已经意识到(谢天谢地,在没有太多这样的测试之后)默认情况下,bash 中的“zip”命令(或者至少在我的 mac 上)正在以只需要 unzip v1 的格式压缩文件.0 进行提取,但普通的 excel 文件以需要 v2.0 提取的方式进行压缩。我通过压缩和解压缩我知道正常加载的 excel 文件,然后尝试加载它来检查这是一个问题。OpenOffice 很不高兴。

所以,我知道我需要完全按照 excel 的方式压缩文件,但我不确定如何做到这一点。我的电脑上有 zip 版本 3,所以希望如果 zip/unzip 发布周期是同步的,它应该是可能的,但我没有在手册页上看到任何立即似乎是解决方案的内容。

编辑:并且 zip -9 (其中 zip -h 有用地说指示 zip 'zip 更好')仍然只需要 v1.0 来提取。


问题:

如何在 bash 中指定我希望 zip 以需要 unzip v2.0 才能解压缩的方式压缩文件?

4

1 回答 1

1

通常,不同版本生成的压缩文件之间不兼容的原因是使用的压缩算法。如果使用 zip 1.0 中不存在的算法压缩文件,则会导致您看到的不兼容。

查看您的 zip 实用程序的手册页,看看是否有指定要使用的压缩类型的选项。如果有,请查看从 Excel 创建的现有文件,并找出它们使用什么类型的压缩算法进行压缩,然后使用它。

On my Linux system, zip reports "This is Zip 2.31 (March 8th 2005), by Info-ZIP.", and it does not have an option for specifying the compression algorithm. On my Windows system, 7-zip does have the option, and it looks like they do have a Mac version available, so you could try that if your zip utility doesn't support that option.

于 2012-06-21T16:56:33.793 回答