【问题标题】:how to use applescript to move files to new folder by extension, keeping subfolder name如何使用applescript通过扩展名将文件移动到新文件夹,保留子文件夹名称
【发布时间】:2023-03-14 18:49:01
【问题描述】:

这就是我想要做的。

我有一个文件结构,其中包含 JPG 和 RAW 格式的照片。这是一个名为“照片”的文件夹,其中包含按日期划分的子文件夹。我想只将 RAW 照片复制到一个新文件夹“Photos RAW”,但按拍摄/创建日期保留结构。

我可以使用 automator 或 applescript 仅将文件复制到一个新目录,但是如何使用 applescript 遍历目录树以便覆盖所有子文件夹?

【问题讨论】:

    标签: macos applescript automator


    【解决方案1】:

    试试这个。您会看到我也使用“全部内容”来获取子文件夹中的文件。

    set extensionToFind to "raw"
    
    set topLevelFolder to (choose folder) as text
    set pathCount to count of topLevelFolder
    
    tell application "Finder"
        -- get the files
        set rawFiles to files of entire contents of folder topLevelFolder whose name extension is extensionToFind
        if rawFiles is {} then return
    
        -- setup the folder where the files will be moved
        set rawFolder to ((container of folder topLevelFolder) as text) & "Photos_Raw:"
        do shell script "mkdir -p " & quoted form of POSIX path of rawFolder
    
        repeat with aFile in rawFiles
            set aFileContainer to (container of aFile) as text
            if topLevelFolder is equal to aFileContainer then
                -- here the file is at the top level folder
                set newPath to rawFolder
            else
                -- here we calculate the new path and make sure the folder structure is in place
                set thisFile to aFile as text
                set subFolderPath to text (pathCount + 1) thru -((count of (get name of aFile)) + 1) of thisFile
                set newPath to rawFolder & subFolderPath
                do shell script "mkdir -p " & quoted form of POSIX path of newPath
            end if
    
            move aFile to folder newPath
        end repeat
    end tell
    

    【讨论】: