Applescript: как искать и записывать путь к каждому файлу данного типа в заданном месте

Я уверен, что это очень легко и очень просто, но я полный новичок в AppleScript. Скрипт должен:

  1. Поиск в томе для каждого item, kind которого AppleWorks document (расширения файлов не будут достаточными, поскольку до OS X документы AppleWorks со встроенными носителями фактически были пакетами, а не документами).

  2. Запишите путь и имя файла (без расширения) каждого документа на потом.

  3. Скопируйте каждый документ в другой том.

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

  5. Замените каждый исходный файл обновленной версией самого себя (вероятно, в формате iWork, сейчас), используя исходные имена файлов (независимо от расширения) и исходные пути.

Я начинаю с:

tell application "Finder" to get the path of every item in startup disk

Но мне сразу представляют:

error "Finder got an error: Can’t get directory of startup disk." number -1728 from directory of startup disk

Я неплохо разбираюсь в нескольких языках программирования, но я буквально ничего не знаю об AppleScript. Буду признателен даже за некоторые основные указания о том, как собирать информацию (т. е. следует ли мне использовать path или directory?) о items и т. д. Мне нужно управлять парой тысяч файлов в почти случайном порядке на компьютере моего босса!


person Jonline    schedule 03.01.2012    source источник


Ответы (1)


Для начала позвольте мне объяснить, как найти команды, которые вы можете использовать. Каждое приложение имеет «словарь» терминов и способов использования applescript. Каждое приложение отличается, поэтому вы должны смотреть в словарь, чтобы найти правильные термины. Итак, начните с Finder. Откройте редактор AppleScript, и в меню файлов вы увидите «открыть словарь». Выберите это, и откроется диалоговое окно со списком всех ваших приложений. Найдите Finder и откройте его. Вы можете просмотреть словарь, но вы уже знаете некоторые термины, поэтому попробуйте использовать поле поиска. Попробуйте поискать "предмет". Вы, вероятно, получите список из множества результатов «item», но вам нужно найти тот, тип которого является «class». Нажмите на это, и вы увидите файл класса, и он показывает свои свойства. Это то, что вы можете искать.

Обратите внимание, что вам не нужно получать путь, потому что просто получение элемента является его путем. Вы увидите, что есть свойство «вид» и свойство «расширение имени», которые помогут вам найти конкретный тип документа, который вы ищете.

Обычно, когда вы получаете предметы чего-то, вы получаете только предметы высшего уровня. Вы не получите элементы в подпапках. Чтобы также искать подпапки, вам нужно использовать команду «полное содержимое» (вы также найдете это в словаре).

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

Итак, со всем этим я бы сделал, чтобы найти все файлы AppleWorks. Сначала вам нужно выяснить свойство «kind» файла appleworks, чтобы вы могли использовать его в своем скрипте. Запустите это, выберите файл appleworks и посмотрите на результаты. Вы получите запись свойств. Посмотрите на значение "kind" и используйте его во втором скрипте...

set a to choose file
tell application "Finder" to return properties of a

Теперь поместите свое значение в этот скрипт... это может быть что-то отличное от "AppleWorks"...

tell application "Finder"
    set theAppleworksDocs to document files in entire contents of startup disk whose kind is "AppleWorks"
end tell

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

Есть более быстрый способ. Вы можете выполнить поиск в центре внимания из applescript с помощью утилиты unix «mdfind». Но для этого вам нужно знать kmdItemContentType файла, который вы хотите найти, и кучу других вещей... так что пока пользуйтесь Finder. Вам все равно понадобится Finder, когда вы будете выполнять другие части своей работы.

Удачи!

person regulus6633    schedule 04.01.2012
comment
Большое вам большое спасибо за то, что нашли время написать код, который мне был нужен, и так много справочной информации. - person Jonline; 04.01.2012