我想在我正在编写的应用程序中使用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命令,因为要压缩的文件相当大,所以内置进度条很简洁。
或者,我可以通过编程方式使用Archive Utility吗?
感谢。
答案 0 :(得分:12)
Archive Utility.app使用以下命令创建其zip存档:
ditto -c -k --sequesterRsrc --keepParent Product.app Product.app.zip
答案 1 :(得分:3)
Archive Utility.app不可编写脚本。
-dd / - display-dots选项将使命令行zip实用程序在压缩时显示进度点。您可以解析进度条的zip输出。如果扫描和打开文件的时间超过五秒,zip也会显示点。
最好是集成压缩库,例如zlib或libbzip2。这两种方法都可以让您一次压缩一部分数据。您需要处理进度条更新,您可以在压缩每个数据块后执行此操作。
答案 2 :(得分:1)
Automator怎么样? “创建档案”行动可行。
答案 3 :(得分:1)
我使用Archive Utility来解压缩Applescripts中的文件:
tell application "Archive Utility" to open filePath
但是,这只会告诉Archive Utility开始解压缩。它将在自己的时间内完成,AppleScript将继续执行而无需等待减压完成。存档实用程序在完成后不会告诉AppleScript。
如果Archive Utility已在运行,您可以使用上述行。它会将新文件添加到其队列中并在准备就绪时解压缩。
此外,Archive Utility的首选项将控制它如何实现目标。例如:它可能会解压缩到其他文件夹或删除原始文件夹。您可以将其作为程序运行,并在有帮助的情况下更改首选项。
我没有使用它来使Archive Utility压缩文件。