2013-02-26 3 views
1

Я новичок в applescript. Я пытаюсь создать приложение сценария Automator, которое открывает пакетные файлы в InDesign, находит и изменяет текст внутри файла. (Я думал, что это будет сложный бит, но это не так.) То, что я пытаюсь сохранить, это сохранение этих файлов в другом месте, но с использованием исходных имен файлов, поскольку мне нужно сохранить исходные файлы. У меня есть сценарий для указания пути и имени файла, но мне нужно указать только путь и использовать существующее имя файла. Это возможно?Как указать путь к файлу, но не имя InDesign applescript

код, я попытался было это:

tell application "Adobe InDesign CS5.5" 
save document 1 to "users:xxx:Desktop:" 
close document 1 
end tell 

Это не похоже на работу по той причине, что я не задающей имя файла, НО Я НЕ ХОЧУ! Есть ли способ вызвать оригинальное имя файла? Я предполагаю, что должен быть способ сделать это, так как я не вижу смысла сценария, специфичного для одного конкретного файла.

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

ответ

0

Если вы хотите использовать оригинальное имя файла при сохранении, вы можете просто вытащить его из свойства файла и объединить его с пути, который вы хотите сохранить, например, так:

set origName to the name of document 1 as string 
save document 1 to ("your:path:here:" & origName) 

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

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

set thePoint to the offset of "." in origName 
set firstPart to (characters 1 through (thePoint - 1) of origName) as string 
set fpLength to the length of firstPart 

set newSuffix to ((the last character of firstPart) as number) + 1 
set newName to (characters 1 through (fpLength - 1) of firstPart) & newSuffix ¬ 
    & ".indd" as string 

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

Ключ разрушает исходное имя файла, а затем выполняет операции над частями.

В настоящее время в этом есть несколько ограничений: любой суффикс, отличный от одной цифры, делает вещи более сложными (хотя и не невозможными) и предполагает, что любой, кто запускает скрипт, имеет «Показать все расширения имен файлов», включенные в предпочтениях Finder (это можно обойти, хотя).

Обертывание все вверх дает нам следующее:

tell application "Adobe InDesign CS5.5" 
    set origName to the name of document 1 as string 

    set thePoint to the offset of "." in origName 
    set firstPart to (characters 1 through (thePoint - 1) of origName) as string 
    set fpLength to the length of firstPart 

    set newSuffix to ((the last character of firstPart) as number) + 1 
    set newName to (characters 1 through (fpLength - 1) of firstPart) ¬ 
     & newSuffix & ".indd" as string 

    save document 1 to ("your:path:here:" & newName) 
end tell 

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

0

В документах InDesign есть 3 объекта недвижимости, которые могут вас заинтересовать:
name: "xxx_xxx_M6.INDD»
file path: файл "Macintosh HD: sourceFolder:"
full name: файл "Macintosh HD: sourceFolder: xxx_xxx_M6.indd"

Таким образом, чтобы сохранить (& близко) открытый файл на рабочем столе, с таким же имя, вы можете сделать это:

tell application "Adobe InDesign CS5.5" 
    save document 1 to "users:xxx:Desktop:" & name of document 1 
    close document 1 
end tell 
Смежные вопросы