Получить нераспознанное расширение файла - PullRequest
1 голос
/ 29 ноября 2011

Мне было интересно, как вернуть только расширение файла из строки. Я пробовал «установить переменную для расширения имени ...», подробно описанную в этом вопросе, но, похоже, это работает только для распознанных расширений. Идея состоит в том, чтобы отсортировать файлы с расширением .meta в их собственную коллекцию.

Как у меня сейчас выглядит

tell application "Finder'
   set everyName to name of every item in entire contents of this_folder
end tell

set metaFiles to {}

repeat with n from 1 to count of everyName
   set currentName to item n of everyName
   set currentExt to last word of currentName --this assignment fails
   if currentExt is "meta" then
      set end of metaFiles to currentExt
   end if
end repeat

Я новичок в AppleScript, поэтому я ценю любую помощь и направление. Спасибо!

Редактировать: Hacky Solution

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

Ответы [ 2 ]

1 голос
/ 29 ноября 2011

Имя включает расширение файла, независимо от того, распознает это Finder или нет. Так что просто сортируйте по имени, как это ...

tell application "Finder"
    set metaFiles to (every item in entire contents of this_folder whose name ends with "meta") as alias list
end tell
1 голос
/ 29 ноября 2011

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

tell application "Finder"
    set metaFiles to (every item in entire contents of this_folder whose name extension is "meta") as alias list
end tell
...