如何使用 applescript 和 shell 解压缩文件,但不会收到以下错误?

How can I unzip a file with applescript and shell, but without receiving the following error?

我是 AppleScript 的新手,我目前正在使用 AppleScript 实现一些 Finder 工作流程的自动化。

在脚本末尾,我希望 AppleScript 执行 shell 命令,解压缩 .zip 文件。

如果我在终端中手动输入shell脚本“unzip Users/1/2/3”,zip会成功解压。

遗憾的是 AppleScript returns 一个错误:error: cannot create abc.jpg Permission denied" number 50

如果有人可以帮助我修复这个错误,那将是非常好的,因为我对 AppleScript 没有太多经验。

set raw_folder to "/Users/abc/Desktop/1/2/3/4"
set editing_folder to "/Users/abc/Desktop/1/2/3/5"

tell application "Finder" to sort every file of folder (raw_folder as POSIX file) by modification date

tell application "Finder" to set theFile to (item 1 of result) as alias

tell application "Finder" to move theFile to (editing_folder as POSIX file)

tell application "Finder" to set theFile to (item 1 of folder (editing_folder as POSIX file))

do shell script "unzip" & " /Users/abc/Desktop/1/2/3/5/abc.zip" 

AppleScript 的 do shell script 命令在默认环境下工作,当您在终端中的 shell 中工作时,该环境不会加载您期望的设置。这里的问题是这个精简版 shell 的默认目录是 '/',这意味着您正试图在根级别解压缩您的存档,并且 运行 进入权限问题。您应该使用 -d 选项明确指向输出目录:

do shell script "unzip -d /Users/abc/Desktop/ /Users/abc/Desktop/1/2/3/5/abc.zip" 

这会将文件的内容解压缩到桌面。

Finder open 命令可以处理解压缩文件,这通常由默认的 Archive Utility 应用程序完成。此方法将文件解压缩到同一目录 - 不确定您的错误来自何处,但除非设置了工作目录,否则 unzip shell 实用程序将解压缩到 base/root 用户目录。

set theFile to (choose file) -- get the zip file

tell application "Finder" to open theFile
-- or --
do shell script "cd ~/Desktop;  /usr/bin/unzip " & quoted form of POSIX path of theFile -- unzip to current working directory

请注意,Finder 不使用 POSIX 路径,因此您不需要强制 Finder 项目,除非您要将它们与 shell 命令。