【问题标题】:Creating a folder structure and copy files into specific folders创建文件夹结构并将文件复制到特定文件夹中
【发布时间】:2014-04-28 10:32:32
【问题描述】:

我在一家设计机构工作,正在尝试创建一个 AppleScript,它创建一个文件夹结构,然后将文件复制到它创建的指定文件夹中。

我是 applescript 的新手,经过数小时的互联网搜索后,我设法创建了创建文件夹的位。这允许我创建具有特定工作编号的文件夹,然后选择保存位置。这一切都很好。我现在要做的就是将几个文档复制到它创建的文件夹中。

这是我目前所拥有的:

tell application "Finder"
    activate

    set jobNum to text returned of (display dialog "Enter a job number:" default answer "")
    set jobName to text returned of (display dialog "Enter a job name:" default answer "")
    set folderpath to POSIX path of (choose folder with prompt "Select client folder")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_Reference") & "/" & quoted form of (jobNum & "_Briefs")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_Reference") & "/" & quoted form of (jobNum & "_Copy")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_Reference") & "/" & quoted form of (jobNum & "_Supplied")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_Assets")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_Old")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_Final_Artwork")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_Assets") & "/" & quoted form of (jobNum & "_Purchased_Images")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_Assets") & "/" & quoted form of (jobNum & "_Non_Purchased_Images")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_In_Situ") & "/" & quoted form of (jobNum & "_JPG's")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_In_Situ") & "/" & quoted form of (jobNum & "_PSD's")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_Artwork_&_Design") & "/" & quoted form of (jobNum & "_Id")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_Artwork_&_Design") & "/" & quoted form of (jobNum & "_Ai")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_Artwork_&_Design") & "/" & quoted form of (jobNum & "_PS") & "/" & quoted form of (jobNum & "_PSDs")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_Artwork_&_Design") & "/" & quoted form of (jobNum & "_PS") & "/" & quoted form of (jobNum & "_JPGs")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_Artwork_&_Design") & "/" & quoted form of (jobNum & "_Presentation_Boards")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_C4D") & "/" & quoted form of (jobNum & "_Assets")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_C4D") & "/" & quoted form of (jobNum & "_Renders")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_C4D") & "/" & quoted form of (jobNum & "_Visuals")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_Creative") & "/" & quoted form of (jobNum & "_Mac_Scamps")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_Creative") & "/" & quoted form of (jobNum & "_Scamps")
    do shell script "/bin/mkdir -p " & quoted form of folderpath & "/" & quoted form of (jobNum & "_" & jobName) & "/" & quoted form of (jobNum & "_For_Client")


end tell

例如我想将一个 InDesign 文件复制到“演示板”文件夹中,并将一个 pdf 复制到参考文件中,该文件将在 applescript 完成后打开。

任何帮助将不胜感激。 谢谢

【问题讨论】:

  • 不要在 tell 应用程序块中使用 do shell 脚本,除非您的目标是当前应用程序常量。它违反了脚本添加安全性,有时会抛出错误。

标签: applescript


【解决方案1】:

您可以将所有文件夹设置为变量并将其提供给输入文件夹以移动文件并对其进行排序。不能太具体,否则你会遇到一个问题,它不适用于其他工作。我会这样去。

    set jobNum to text returned of (display dialog "Enter a job number:" default answer "")
        set jobName to text returned of (display dialog "Enter a job name:" default answer "")
        set folderpath to POSIX path of (choose folder with prompt "Select client folder")
    set InputFolder to (choose folder with prompt "Select client folder") as alias

    tell application "Finder"
    set FileList to get every item of folder InputFolder

    set FolderVariable to make new folder at Desination with properties{Name:"folderName" & jobName"}
 set FolderVariable2 to make new folder at Desination with properties{Name:"folderName" & jobName"}

    repeat with CurrentFile in FileList
    if (name of CurrentFile) contains "SomeIdentifier" then
    move file CurrentFile to folder FolderVariable
else if (name of CurrentFile) contains "SomeotherIdentifier" then
 move file CurrentFile to folder FolderVariable2 
    end if
    end tell

如果您有不同的标识符,请添加更多 ifs

【讨论】: