Как я могу перемещать каждую папку на своем рабочем столе итеративно с AppleScript? - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь написать AppleScript, который просматривает папки в папке «Рабочий стол» и перемещает их в подпапку, называемую «место назначения». (Мне нужно перебирать папки рабочего стола, а не перемещать их все сразу, потому что я хочу, чтобы каждая папка была перемещена или не перемещена на основе случайно сгенерированного числа).

Мой код:

set desktopFolders to (path to desktop as text)
set destinationFolder to (path to desktop as text) & "destination"

    tell application "System Events"
        set subFolders to (get every disk item of folder desktopFolders)
        repeat with eachFolder in subFolders
            move eachFolder to destinationFolder
        end repeat
    end tell

Сценарий работает, если я пытаюсь переместить всю переменную subFolders в destinationFolder, и он не выдает ошибку при попытке перебрать eachFolder в subFolders. Однако, когда я пытаюсь переместить eachFolder в destinationFolder, я получаю следующую ошибку:

System Events got an error: NSArgumentsWrongScriptError

Любая причина, по которой переменная eachFolder не может быть перемещена таким образом? Есть ли лучший способ перебирать папки в папке «Рабочий стол», чтобы я мог перемещать каждую из них по отдельности?

1 Ответ

0 голосов
/ 28 января 2020

Измените desktopFolders на: desktopFolder

  • Обратите внимание, что на конце нет s, так как папка Рабочий стол является единственной не множественное число.

Изменить disk item в:

set subFolders to (get every disk item of folder desktopFolder)

На: folder

Также добавить:

whose name is not "destination"

В конец:

get every folder of folder desktopFolder

Пример:

set subFolders to (get every folder of folder desktopFolder whose name is not "destination")

Вы не хотите пытаться переместить папку destination в себя.

Без единого desktopFolders, эти другие изменения позволяют остальной части кода работать без ошибок при тестировании в macOS High Sierra .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...