AppleScript, чтобы добавить подпапку, если отсутствует. Используется в скриптах действий папок - PullRequest
0 голосов
/ 30 апреля 2019

Прикрепленный скрипт был создан путем объединения двух идей скрипта.Идея состоит в том, чтобы автоматически переместить все файлы Airdrop во вложенную папку «AirDrop» в папке «Загрузки» с помощью функции «Действия папки».Тем не менее, папка 'Airdrop' должна присутствовать, чтобы эта часть скрипта работала, и иногда, при очистке, я удаляю ее вместе со всеми остальными загрузками.

Итак, я добавил немного больше кода (помнитея любитель кодирования) чтобы она проверила папку «AirDrop» и создала ее, если она отсутствует.

Эта часть работает, когда я тестирую ее в редакторе сценариев и сообщает, является ли «Airdrop»папка существует, и если она не создана.

При подключении к папке загрузки в качестве сценария действия последний добавленный код, как представляется, пропускается.Все файлы air drop попадают в папку загрузки или подпапку airdrop, если таковые имеются, но, по-видимому, скрипт проверяет наличие папки AirDrop или нет, «говорит», есть ли папка «AirDrop» или нет.Он не создаст его, если он отсутствует.

property ORIGINAL_AIRDROP_FOLDER : "macOS SSD:Users:USerName:Downloads"
property NEW_AIRDROP_FOLDER : "macOS SSD:Users:UserName:Downloads:AirDrop"
property QUARANTINE_KEY : "59"

property GET_QUARANTINE_COMMAND_START : "ls -l -@ '"
property GET_QUARANTINE_COMMAND_END : "' | tr '\\n' ' ' | sed 's/.*com\\.apple\\.quarantine\\s*\\(\\d*\\)/ \\1/' | awk '{$1=$1};1'"

------ Добавлено для проверки и создания отсутствующей подпапки ---------

tell application "Finder"
    set inputFolder to (ORIGINAL_AIRDROP_FOLDER) as Unicode text
    set convertedFolderPath to (ORIGINAL_AIRDROP_FOLDER) & ":" & ("AirDrop")
    if (exists (folder convertedFolderPath)) then
        say "Air Drop folder exists"
    else
        say "Air Drop folder does not exist"
        make new folder at inputFolder with properties {name:"AirDrop"}
        say "Created Air Drop folder"
    end if
end tell

При добавлении элементов папки в this_folder после получения add_items

    repeat with i from 1 to length of added_items
        set current_item to item i of added_items
        set quarantine_type to getQuarantineType(POSIX path of current_item)
        if quarantine_type is equal to QUARANTINE_KEY then
            moveFile(current_item, alias NEW_AIRDROP_FOLDER)
        end if
    end repeat
end adding folder items to

on moveFile(move_file, destination_dir)
    tell application "Finder"
        move move_file to destination_dir with replacing
    end tell
end moveFile

on getQuarantineType(file_path)
    return do shell script GET_QUARANTINE_COMMAND_START & file_path & GET_QUARANTINE_COMMAND_END
end getQuarantineType

Я бы хотел запустить часть скрипта для создания отсутствующей папки при необходимости.

1 Ответ

0 голосов
/ 02 мая 2019

Это была моя решимость и дает то, что я хотел.Еще раз спасибо всем, кто ответил.Теперь это отображается как правильно отформатированный.Я не читал в первый раз, как ввести блок кода на этом сайте, поэтому оказалось, что я не отформатировал его правильно.Это был не тот случай.

property ORIGINAL_AIRDROP_FOLDER : "macOS SSD:Users:KerryVogt:Downloads"
property NEW_AIRDROP_FOLDER : "macOS SSD:Users:KerryVogt:Downloads:AirDrop"
property QUARANTINE_KEY : "59"

property GET_QUARANTINE_COMMAND_START : "ls -l -@ '"
property GET_QUARANTINE_COMMAND_END : "' | tr '\\n' ' ' | sed 's/.*com\\.apple\\.quarantine\\s*\\(\\d*\\)/ \\1/' | awk '{$1=$1};1'"

on adding folder items to this_folder after receiving added_items
    tell application "Finder"
        set inputFolder to (ORIGINAL_AIRDROP_FOLDER) as Unicode text
        set convertedFolderPath to (ORIGINAL_AIRDROP_FOLDER) & ":" & ("AirDrop")
        if (exists (folder convertedFolderPath)) then
            say "Files have been saved in the folder AirDrop, in the Download folder."
        else
            say "An Air Drop folder will be added to the download folder to complete this action."
            make new folder at inputFolder with properties {name:"AirDrop"}
            say "Air Drop folder has been added"
        end if
    end tell

    repeat with i from 1 to length of added_items
        set current_item to item i of added_items
        set quarantine_type to getQuarantineType(POSIX path of current_item)
        if quarantine_type is equal to QUARANTINE_KEY then
            moveFile(current_item, alias NEW_AIRDROP_FOLDER)
        end if
    end repeat
end adding folder items to

on moveFile(move_file, destination_dir)
    tell application "Finder"
        move move_file to destination_dir with replacing
    end tell
end moveFile

on getQuarantineType(file_path)
    return do shell script GET_QUARANTINE_COMMAND_START & file_path & GET_QUARANTINE_COMMAND_END
end getQuarantineType
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...