Applescript переименовывает файл, выдает ошибки? - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть этот простой код в скрипте Apple, который при запуске должен переименовать файл.Вместо этого он выдает ошибку. Не могу получить файл "Тома: Проекты: Проекты: 1.pdf".

set ff to file "Volumes:Projects:Projects:1.pdf"
set ss to "Volumes:Projects:Projects:1.pdf"
set name of ff to ss

Ответы [ 2 ]

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

Три основные проблемы.

  1. Чтобы переименовать файл, вы должны указать Finder или System Events, чтобы сделать это.
  2. Начинается путь HFS (через двоеточие) всегда с именем диска, никогда с Тома .
  3. Чтобы переименовать файл, задайте для свойства name файл name , а неa полный путь .

На самом деле ваш пример ничего не делает.

Этот фрагмент переименовывает файл 1.pdf в папке "Projects" на диске Projects до 2.pdf

tell application "Finder"
    set name of file "Projects:Projects:1.pdf" to "2.pdf"
end tell
0 голосов
/ 11 декабря 2018

Используя следующий пример AppleScript код , при этом для файла установлено значение ff по указанному пути:

set ff to POSIX path of "Volumes:Projects:Projects:1.pdf"
set ss to "2.pdf"

tell application "System Events" to set name of file ff to ss

Показывает следующее Событие в Редактор сценариев :

tell application "System Events"
    set name of file "/Volumes/Projects/Projects/1.pdf" to "2.pdf"
end tell

Просмотр Finder , 1.pdf было переименовано в 2.pdf, как и ожидалось в этом примере.


Обновление: обратите внимание, что vadian положительно оценивает 2 в иерархии пути HFS ичастично почему я решил преобразовать его в путь POSIX .Я также предпочитаю использовать Системные события , поскольку он обычно обрабатывает файловые операции быстрее, чем Finder и будет работать как в стиле HFS , так и в стиле POSIX paths .

Другими словами, с Системными событиями работает следующее:

tell application "System Events" to set name of file "Projects:Projects:1.pdf" to "2.pdf"

tell application "System Events" to set name of file "/Volumes/Projects/Projects/1.pdf" to "2.pdf"

Но это тоже, хотя и некорректно, работает:

tell application "System Events" to set name of file "Volumes:Projects:Projects:1.pdf" to "2.pdf"

Однако, с Finder , только правильный HFS-путь работает без ошибок, он не может обработать POSIX-путь , потому чтоон не понимает этого, поскольку его нет в словаре AppleScript Finder .

При этом следует всегда следить за тем, чтобы передаваемая информация была правильно сформирована, даже если сработал неправильный путь.в этом примере с Системными событиями , это не очень хорошая привычка!

...