我正在尝试编写一个苹果脚本应用程序小部件,它将执行以下操作。
当您将多个文件夹拖到窗口小部件上时,它会将每个文件夹的内容压缩为一个单独的zip,这些拉链将与窗口小部件位于同一目录中。
我遇到的问题是我无法弄清楚如何删除初始文件夹,当你解压缩存档时,它需要释放所有文件和子文件夹。
例如,如果我压缩myFolder / index.html 和myFolder / img / myImage.png
它应该解压缩为index.html和img / my image.png
这对我来说非常有用,我每天要将文件夹的内容压缩大约50次,用文件夹的名称重命名拉链并将它们复制到父文件夹中。
如果有人能帮忙解决这个问题,我愿意提供一个神秘奖品,我就会有大量的蒸汽钥匙!
由于
威尔
答案 0 :(得分:0)
这应该可以帮助您入门。如果您不理解某种行为,请随意提问。
on open theFiles
repeat with x in theFiles
set _path to POSIX path of x
tell application "Finder"
if kind of x is "Folder" then
tell me to zipFolder(_path)
end if
end tell
end repeat
end open
on run
-- Handle the case where the script is launched without any dropped files
open (choose folder with multiple selections allowed)
end run
on zipFolder(theFolderPath)
do shell script "cd " & quoted form of theFolderPath & " && zip -r \"../$(basename $(pwd)).zip\" ./"
end zipFolder
这是full applet你也可能想看一下像LaunchBar,Alfred和Keyboard Maestro这样的应用程序,它们可以帮助创建这样的动作。有一些存档的应用程序,如Archiver和Entropy,它们都带有这样的行为。
如果您想学习AppleScript,那么这里有一些您可以考虑添加的功能。
显示对话框处理程序,并将结果作为第二个参数传递给zipFolder处理程序
告诉Finder透露
告诉Finder移动/复制或bash命令
mv
其他人只能帮助你,因为他们可能无法完全理解你所面临的两难境地,所以学习这一点会非常有用,也很有趣。
答案 1 :(得分:0)
对于任何感兴趣的人,这是我正在使用的最终脚本。此脚本接受所选的任何文件夹,并从每个文件夹创建一个zip存档,将它们重命名为文件夹名称,并且不包含zip中的根文件夹。这对于制作Flashtalking HTML5横幅特别有用。
on run {input, parameters}
if input is {} then -- no dropped items
tell application "Finder" to set input to selection as alias list
end if
repeat with x in input
set _path to POSIX path of x
tell application "Finder"
if kind of x is "Folder" then tell me to zipFolder(_path)
end tell
end repeat
end run
on zipFolder(theFolderPath)
do shell script "tDir=" & (quoted form of theFolderPath) & "; cd \"$tDir\"; aZip=\"../$(basename \"$tDir\").zip\"; if [ -e \"$aZip\" ]; then rm \"$aZip\"; fi; zip -r \"$aZip\" ./"
end zipFolder