从命令行使用Archive Utility.app(或使用applescript)

LG0*_*G01 2 compression cocoa applescript objective-c core-services

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

做(从命令行):

/System/Library/CoreServices/Archive\ Utility.app/Contents/MacOS/Archive\ Utility file_to_zip
Run Code Online (Sandbox Code Playgroud)

是否有效,但它创建了一个cpgz文件,我可以忍受(尽管.zip会更好)但主要问题是我无法将2个文件压缩成1个档案:

/System/Library/CoreServices/Archive\ Utility.app/Contents/MacOS/Archive\ Utility ~/foo/a.txt ~/bar/b.txt
Run Code Online (Sandbox Code Playgroud)

上面的命令将创建2个档案(〜/ foo/a.txt.cpgz和〜/ bar/b.txt.cpgz).

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

open -a /System/Library/CoreServices/Archive\ Utility.app --args xxxx
Run Code Online (Sandbox Code Playgroud)

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

或者,我可以通过编程方式使用Archive Utility吗?

谢谢.

Pad*_*aig 12

Archive Utility.app使用以下命令创建其zip存档:

ditto -c -k --sequesterRsrc --keepParent Product.app Product.app.zip
Run Code Online (Sandbox Code Playgroud)

  • 您知道`Archive Utility.app` 如何处理提取吗?命令行 `unzip` 创建一个 `__MACOS` 文件夹。 (2认同)
  • 互联网上最有价值的评论之一。 (2认同)

out*_*tis 3

Archive Utility.app 不可编写脚本。

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

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