Applescript перенести в новую папку с последовательным именованием - PullRequest
0 голосов
/ 04 декабря 2018

Я написал ниже базовый скрипт, который проверяет, существует ли папка и берет ли она содержимое этой папки и добавляет его в подпапку.

, как вы можете видеть в этом скриптегенерирует подпапку с именем V1, я хотел бы знать, был ли способ последовательного имени и создавать новые папки?

например, если папка V1 существует Создать V2 и переместить содержимое

Текущий сценарий

--Set image source folder
set SourceFolder to (choose folder with prompt "Choose Base Images:")
set Sourcefoldertext to SourceFolder as text
set FoldertoReplace to Sourcefoldertext & "Images:"

tell application "Finder
    if (exists folder named "Images" in folder SourceFolder) then make new folder in folder FoldertoReplace with properties {name:"V1"}
    if (exists folder named "Images" in folder SourceFolder) then set fileList to every file of folder FoldertoReplace  
    if not (exists folder named "Images" in folder SourceFolder) then make new folder in folder SourceFolder with properties {name:"Images"}    
    if (exists folder named "V1" in folder FoldertoReplace) then set VersionFolder to the folder named "V1" in the folder FoldertoReplace   
    if (exists folder named "V1" in folder FoldertoReplace) then return move the fileList to the VersionFolder'
end tell

Спасибо, P

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Существующее решение отлично, но я решил добавить альтернативу только для некоторого разнообразия.

Этот обработчик использует Системные события и рекурсивный вызов функции для проверки существующей папки.версии.Параметр targetFolderPath может представлять собой объект alias, путь posix или путь HFS.

to createSequentialVersionFolder at targetFolderPath given name:dir : "V"
    local targetFolderPath, dir

    script
        property fp : targetFolderPath
        property dirname : dir

        to checkVersion(i)
            tell application "System Events"
                if exists the folder named (dirname & i) ¬
                    in the folder named fp then ¬
                    return my checkVersion(i + 1)

                make new folder at folder named fp ¬
                    with properties ¬
                    {name:dirname & i}
            end tell
        end checkVersion
    end script

    result's checkVersion(1)
end createSequentialVersionFolder

Для использования:

createSequentialVersionFolder at "~/Desktop"

или:

createSequentialVersionFolder at (path to desktop folder)
0 голосов
/ 04 декабря 2018

Добавьте этот обработчик, он создаст новую папку с последовательным именем и вернет ссылку Finder на новую созданную папку.

on createSequentialVersionFolder(targetFolderPath)
    set counter to 1
    repeat
        set versionFolder to "V" & counter
        tell application "Finder"
            if not (exists folder versionFolder in folder targetFolderPath) then
                make new folder at folder targetFolderPath with properties {name:versionFolder}
                return result
            end if
        end tell
        set counter to counter + 1
    end repeat
end createSequentialVersionFolder

Ваш другой код содержит много избыточных вещей.Может быть уменьшено до

set Sourcefolder to (choose folder with prompt "Choose Base Images:") as text
set FoldertoReplace to Sourcefolder & "Images:"

tell application "Finder"
    if exists folder FoldertoReplace then 
        set versionFolder to my createSequentialVersionFolder(FoldertoReplace)
        set fileList to every file of folder FoldertoReplace
        move the fileList to the versionFolder
    else 
        make new folder in folder SourceFolder with properties {name:"Images"}
    end if
end tell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...