Apple脚本 - 选择文件,排除类型,压缩它

时间:2013-07-22 14:31:56

标签: applescript

我需要为数百个文件夹压缩文件夹(以及所有子文件夹)的内容。 是否可以运行一个命令来获取特定文件夹(提示)的所有文件,除了所有具有.fla扩展名的文件并将此内容压缩到一个zip文件中?

现在我正在复制文件夹,搜索所有的.fla文件,然后选择文件夹中的所有文件(我要压缩内容,而不是文件夹)并创建一个拉链(取道)太久了。

我知道可以使用Apple Script删除和复制文件。但这是否也适用于上述顺序+压缩?

3 个答案:

答案 0 :(得分:2)

好吧,所以我仍然坚持这个问题。 我创建了一个Bash脚本,它通过一个只有一行代码的Applescript可执行文件执行:

  

执行shell脚本“/Volumes/Work/createZipFile.sh”

Bash脚本打开Applescript,它允许我提示一个文件夹(我知道,打开AS以运行运行AS的Bash脚本有点傻)。然后使用该变量来压缩此文件夹内容,而不使用.fla文件。

  

myFolder =`/ usr / bin / osascript<< EOT

     
    

告诉应用程序“Finder”

         
activate
set myfolder to choose folder with prompt "Select the Folder that you want to zip!"
             

结束告诉       返回(myfolder的posix路径)       EOT`

    
  
     

cd $ myFolder

     

zip -r ZipMe.zip。 -x“ .fla

     

echo“已创建zip文件”

所以这个脚本确实适用于我尝试压缩的文件夹。 但遗憾的是并非我选择的每个文件夹。有时候(不知道为什么)它似乎无法找到我选择的文件夹,因此我启动(至少zip-process开始像疯了一样运行并且不停止)拉链我的整个驱动器。 什么想法可能是错的?

答案 1 :(得分:1)

如果有人想要使用这个脚本(我非常怀疑;)),这是我的最终版本。

#!/bin/bash
#Opens an applescript prompt window to select a folder
myFolder=`/usr/bin/osascript << EOT
    tell application "Finder"
        activate
        set myfolder to choose folder with prompt "Select the Folder that you want to Zip!"
    end tell
return (posix path of myfolder)
EOT`


# Terminate if the path is empty (canceled)
if [ -z "$myFolder" ];
then 
    #echo "Chose a folder!"
    exit 0
else
    #Change the directory to the above selected folder
    cd "$myFolder" 
    # Creates a ZipFile with todays date of the selected folder, neglecting the after -x listed filetypes
    zip  -r ZipFile_`eval date +%Y_%m_%d`.zip . -x "*.fla*" "*.AppleDouble*" "*.DS_Store*" 
    #echo "A zip File has been created"
fi

答案 2 :(得分:0)

你的第一步应该是弄清楚.fla文件的“种类”。为此,请运行此脚本并选择一个.fla文件:

tell application "Finder"
    set theFile to choose file
    display dialog (kind of theFile) as string
end tell

然后要获取所有文件但在任何文件夹中输入该类型,您可以运行此脚本(用您的.fla结果替换为“纯文本”):

tell application "Finder"
    set thePath to choose folder
    set theFiles to get every file of folder thePath whose kind is not equal to "Plain Text"
end tell
从那里开始,这只是拉链的问题。在做了一些快速的谷歌搜索之后,看起来最简单的方法就是通过使用do shell脚本进行压缩,这应该不会那么糟糕,因为你拥有一个漂亮的小数组中需要的所有文件。如果你想要速度,我可能会建议将整个项目转移到bash。这也应该简化一些事情。祝你好运!