Скопируйте смонтированные папки в локальную папку

У нас есть общий ресурс самбы, откуда я хотел бы скопировать папки с помощью яблочного скрипта. Это то, что у меня уже есть (монтажные работы):

mount volume "smb://samba.com/e_18_data11$"
delay 3

set sourcefolder to ("smb://samba.com/e_18_data11$/e_18_data11$/folder1/folder2" as POSIX file)
set localfolder to ("/Users/username/Dropbox/Test" as POSIX file)

tell application "Finder" to duplicate sourcefolder to localfolder

Это дает мне еще эту ошибку:

the routine can not edit objects of this class." number -10010

Я пробовал и комбинировал многие решения уже на SO, например. это решение

– OS X 10.9


person dh762    schedule 20.11.2013    source источник
comment
==› перетащите исходную папку из Finder в свой AppleScript. Он должен вставить путь в скрипт. Используйте этот путь для исходной папки. Я думаю, что это должно помочь.   -  person    schedule 20.11.2013


Ответы (1)


Вероятно, это неправильная спецификация sourcefolder. Я думаю, вы можете просто использовать имя тома вместо «smb://».

set sourcefolder to ("/Volumes/7samba.com/e_18_data11$/e_18_data11$/folder1/folder2" as POSIX file)

(если смонтированный том называется "7samba.com")


Совет: перетащите настоящий sourcefolder из Finder в свой AppleScript. Он должен вставить путь в скрипт. Используйте этот путь для sourcefolder.


Более:

Ошибка, которую вы получаете:

Mac OS error -10010 (telBadHTypeErr): bad hook type specified

Я протестировал его (с двумя локальными папками), чтобы убедиться, что скрипт будет работать. Это сработало и продублировало папку.

Вы можете (или в любом случае должны) обернуть критический код в блок try, например:

    try

        duplicate sourcefolder to localfolder

    on error the error_message number the error_number
        display dialog "Error: " & the error_number & ". " & the error_message buttons {"OK"} default button 1
    end try

Таким образом, вы можете проверить и отреагировать на ошибки.

Дополнение:

Может быть, вы можете проверить существование следующим образом:

tell application "Finder"
    set aBoolean1 to get (exists sourcefolder)
    set aBoolean2 to get (exists localfolder)
end tell

log aBoolean1
log aBoolean2

Оба логических значения должны быть YES

person Community    schedule 20.11.2013
comment
Кроме того, найдите повторяющуюся команду в словаре сценариев Finder. - person ; 20.11.2013
comment
Спасибо. Я все еще получаю сообщение об ошибке Finder got an error: Handler can't handle objects of this class. (-10010) - person dh762; 21.11.2013
comment
Я думаю, что Finder видит папки как файлы, поэтому неправильные объекты? - person dh762; 21.11.2013
comment
… какой путь был вставлен, когда вы перетащили папку на смонтированном томе, которую хотите продублировать, из Finder в документ AppleScript. Вы использовали этот путь? Подробнее: Finder знает много элементов, и я предполагаю, что он будет дублировать, если это возможно, и ссылаться на него правильно. - person ; 21.11.2013
comment
Вот оно: Том называется /Volumes/e_18_data11$/, а не /Volumes/7samba.com/e_18_data11$/ ;-) но спасибо!! - person dh762; 21.11.2013