applescript избавиться от полного пути

У меня есть choose file в моем AppleScript. Когда я запускаю скрипт и выбираю файл, вывод всегда представляет собой полный путь к файлу с расширением файла в конце. Например:

Macintosh HD:Developer:About Xcode.pdf

это то, чего я не хочу. Я только хочу:

About Xcode


Приведенный ниже ответ Kassym Dorsel не работает, если в нем более одного ..

Приведенный ниже ответ Lri не работает с set x to choose file:

error "Can’t make quoted form of alias \"Macintosh HD:Applications:Firefox.app:\" into        type Unicode text." number -1700 from quoted form of alias "Macintosh HD:Applications:Firefox.app:" to Unicode text

person gadgetmo    schedule 28.11.2011    source источник


Ответы (2)


Вы можете использовать Finder для управления именами элементов Finder:

choose file with prompt "Pick one"
set filepath to result

tell application "Finder" to set {dispName, nameExt, isHidden} to ¬
    the {displayed name, name extension, extension hidden} of the filepath


if isHidden or nameExt is equal to "" then
    dispName
else
    (characters 1 through (-2 - (count of nameExt)) of dispName) as text
end if

set baseName to result
person Michael J. Barber    schedule 28.11.2011
comment
@Lri Спасибо, что заметили расширение; исправлено. Поскольку файл выбирается с помощью choose file, он всегда будет существовать — вам нужно использовать choose file name, чтобы получить ссылку на файл, который может не существовать. - person Michael J. Barber; 28.11.2011

Это будет работать:

set a to "Macintosh HD:Developer:About.Xcode.pdf"
set text item delimiters to ":"
set temp to last text item of a
set text item delimiters to "."
set temp to text items 1 thru -2 of temp as text

Дает => About.Xcode

person Kassym Dorsel    schedule 28.11.2011
comment
Это не удается, если имя файла содержит более одного символа .. - person Michael J. Barber; 28.11.2011
comment
Мое первоначальное решение было специфичным для конкретного случая, да. Я обновил свое решение, чтобы разрешить точки в имени файла. Теперь он должен работать для всего. - person Kassym Dorsel; 29.11.2011