6

我想在我正在编写的应用程序中使用 Archive Utility.app 来压缩一个或多个文件。

做(从命令行):

/System/Library/CoreServices/Archive\ Utility.app/Contents/MacOS/Archive\ Utility file_to_zip

确实有效,但它会创建一个 cpgz 文件,我可以接受(即使 .zip 会更好)但主要问题是我无法将 2 个文件压缩到 1 个存档中:

/System/Library/CoreServices/Archive\ Utility.app/Contents/MacOS/Archive\ Utility ~/foo/a.txt ~/bar/b.txt

上述命令将创建 2 个存档(~/foo/a.txt.cpgz 和 ~/bar/b.txt.cpgz)。

我也不能让它做我想做的事:

open -a /System/Library/CoreServices/Archive\ Utility.app --args xxxx

我宁愿不使用 zip 命令,因为要压缩的文件相当大,所以有内置的进度条会很整洁。

或者,我可以以编程方式使用存档实用程序吗?

谢谢。

4

4 回答 4

20

Archive Utility.app 使用以下内容创建其 zip 存档:

ditto -c -k --sequesterRsrc --keepParent Product.app Product.app.zip
于 2012-02-29T00:05:16.900 回答
3

Archive Utility.app 不可编写脚本。

-dd/--display-dots 选项将导致命令行zip实用程序在压缩时显示进度点。您可以为进度条解析 zip 的输出。如果扫描和打开文件的时间超过 5 秒,zip 也会显示点。

最好集成一个压缩库,例如zliblibbzip2。两者都可以让您一次压缩一部分数据。您需要处理进度条更新,您可以在压缩每个数据块后执行此操作。

于 2011-10-19T22:35:06.903 回答
1

自动机怎么样?“创建存档”操作将起作用。

于 2011-10-26T16:27:31.913 回答
1

我使用存档实用程序从 Applescripts 解压缩文件:

tell application "Archive Utility" to open filePath

但是,这只告诉存档实用程序开始解压缩。它会在自己的时间内完成,applescript 将继续执行而不等待解压完成。归档实用程序完成后不会告诉 AppleScript。

如果存档实用程序已经在运行,您可以使用上述行。它会将新文件添加到其队列中并在准备好时解压缩。

此外,存档实用程序的首选项将控制它如何实现目标。例如:它可能会解压缩到不同的文件夹或删除原始文件。如果有帮助,您可以将其作为程序运行并更改首选项。

我没有使用它来获取存档实用程序来压缩文件。

于 2013-10-10T21:14:48.147 回答