2015-11-27 2 views
0

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

Например: есть 2 папки на рабочем столе. один из них называется «Проект Джорджа», а другой - «Проект Рокко».

Мне нужны папки и их соответствующие подпапки, содержащие Джордж, для перемещения в папку george на сетевом диске (/ Volumes/AMT/George) и то же самое с любыми папками, содержащими Rocco и т. Д. .

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

До сих пор, я попробовал этот скрипт на моем локальном диске, но это на самом деле не двигаться ничего:

global theWatchedFolder 
set theWatchedFolder to choose folder 
on idle 
    tell application "Finder" 
     set theDetectedItems to every item of theWatchedFolder whose name contains "rocco" 
     repeat with aDetectedItem in theDetectedItems 
      move aDetectedItem to "/Users/Rocco/Test" 
     end repeat 
    end tell 
    return 1 
end idle 

ответ

0

1) в инструкции перемещения необходимо использовать Finder путь (User: Рокки: Test :), а не путь Unix (/ Users/Rocco/Test). Кроме того, папка назначения должна быть псевдоним, а не строка

move aDetectedItem to ("Users:Rocco:Test:" as alias) 

2) возвращение 1 заставит ваш скрипт для запуска только 1 секунду после. Конечно, слишком быстро. может быть уже каждые 30 секунд, должно быть достаточно, чтобы не убить вашу систему.

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

4) вместо использования обработчика «idle», почему вы не используете сценарий действия папки в своих двух папках для рабочего стола? С обработчиком «on add item» скрипт будет запускаться каждый раз, когда вы добавляете элемент (файл или папку) в папку (один скрипт для проекта George Project и почти такой же для проекта Rocco). Этот скрипт должен искать все добавленные файлы/папки, перемещать их и в конечном итоге удалять. Поскольку только обработанный элемент обрабатывается с помощью этого обработчика, вы не должны удалять уже обработанные элементы.

Смежные вопросы