Наименование файла Applescript - PullRequest
0 голосов
/ 23 мая 2011

Фрагмент кода:

 tell application "Finder" to set new_item to ¬
 (container of this_item as string) & (name of this_item) & "s"
 save this_image in new_item as typ

Сохранение файла как filename.pngs Я хочу сохранить его как filenames.png.Есть идеи как это исправить?

Ответы [ 2 ]

2 голосов
/ 24 мая 2011

Сохраните это как приложение, затем вы можете добавить на него что-нибудь, и оно скопирует их, добавив s к имени.Или вы можете дважды щелкнуть по нему, и он попросит вас выбрать файл для копирования. ПРИМЕЧАНИЕ : измените свойство appendText , если вы хотите изменить текст (например, "s"), добавляемый к имени.

Примечаниеобработчик getName_andExtension (f) .Это то, что я использую, чтобы получить имя и расширение из файла.Я использую это для вычисления нового пути при добавлении s.

Надеюсь, это поможет!

property appendText : "s"

on run
    set f to choose file
    duplicateInPlace_appendingText(f, appendText)
end run

on open the_items
    repeat with f in the_items
        duplicateInPlace_appendingText(f, appendText)
    end repeat
end open

on duplicateInPlace_appendingText(f, textToAppend)
    set f to f as text
    set {nm, ex} to getName_andExtension(f)
    tell application "Finder" to set theContainer to (container of item f) as text

    if ex is "" then
        set new_path to theContainer & nm & textToAppend
    else
        set new_path to theContainer & nm & textToAppend & "." & ex
    end if

    do shell script "cp -R " & quoted form of POSIX path of f & space & quoted form of POSIX path of new_path
end duplicateInPlace_appendingText

on getName_andExtension(f)
    set f to f as text
    set {name:nm, name extension:ex} to info for file f without size
    if ex is missing value then set ex to ""
    if ex is not "" then
        set nm to text 1 thru ((count nm) - (count ex) - 1) of nm
    end if
    return {nm, ex}
end getName_andExtension
0 голосов
/ 23 мая 2011

name of this_item дает полное имя элемента Finder, включая расширение файла. Вы должны разделить это. К сожалению, это не так просто, как могло бы быть. Вы можете сделать что-то вроде:

tell application "Finder"
    get the selection 
    set {dispname, ext, exthidden} to {displayed name, name extension, extension hidden} of item 1 of the result
end tell

if exthidden then
    dispname & "s." & ext
else
    ((characters 1 through -(2 + (count of ext)) of dispname) as string) & "s." & ext
end if

Это просто строит измененное имя для первого элемента в выборе Finder, ничего не делая с ним.

...