Копировать папку по текущему пути с созданным пользователем именем (applecript) - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь настроить яблочный скрипт, который

  1. Запрашивает у пользователя ввод текста
  2. Создает новую папку с входными данными
  3. Копиифайлы в эту папку из другой папки

Это то, что у меня пока есть, но я получаю сообщение об ошибке: "Файл / Пользователи / ***** / Рабочий стол / Temp / _scripts / wasn 't found "

tell application "Finder"
    set newfoldername to text returned of (display dialog "Project name:" default answer "no name")
    set loc to container of (path to me) as alias

    set newclient to make new folder at loc with properties {name:newfoldername}
    set structure to ((POSIX path of loc) & "_scripts/") as alias

    duplicate folder structure to loc

end tell

папка _scripts находится в той же папке, что и мой яблочный скрипт.Ожидается ли файл, а не папка?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Ответ Вадиана объяснил, почему код OP не работает должным образом и уже дал работающее решение.

Для кого-то еще, кому может понадобиться псевдоним для повторного использования, мы также можемпреобразовать формат пути к файлу, явно сказав «POSIX file» перед строкой пути:

set structure to POSIX file ((POSIX path of loc) & "_scripts/") as alias

(поскольку сценарий должен копироваться в newclient, поэтому последняя строка также изменяется,) полный код здесь:

tell application "Finder"
    set newfoldername to text returned of (display dialog "Project name:" default answer "no name")
    set loc to container of (path to me) as alias

    set newclient to make new folder at loc with properties {name:newfoldername}
    set structure to POSIX file ((POSIX path of loc) & "_scripts/") as alias

    duplicate folder structure to newclient

end tell

PS также рекомендуется проверить наличие папки _scripts/ и несуществование создаваемой папки, если они не контролируются.

0 голосов
/ 11 февраля 2019

Наиболее существенной ошибкой является то, что Finder не распознает пути POSIX.

Если вы хотите скопировать папку "_scripts" на том же уровне, что и выполняемый скрипт, в новую созданную папку, просто используйте Finderсинтаксис спецификатора (folder "_scripts" of loc)

tell application "Finder"
    set newfoldername to text returned of (display dialog "Project name:" default answer "no name")
    set loc to container of (path to me)

    set newclient to make new folder at loc with properties {name:newfoldername}
    duplicate folder "_scripts" of loc to newclient

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