如何使用 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 命令。
我是 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 命令。