В коде много проблем.
Наиболее значимыми являются
droppedItems
- это список элементов. Чтобы получить имя, вы должны использовать один элемент. - Средство поиска принимает только пути HFS (разделенные двоеточиями), и вы даже пытаетесь скопировать файлы в буквальную строку. С помощью пути HFS вам не нужно экранировать символы пробела. В строке
do shell script
путь экранируется с помощью quoted form of
. - Команда
duplicate
принадлежит Искателю. Он должен быть заключен в блок tell application "Finder"
.
Окно Finder не имеет значения. Вы можете дублировать элементы без открытого окна. Однако я добавил строку, чтобы открыть папку. И вам не нужно повторять l oop.
on open droppedItems
set archivePath to (path to desktop as text) & "Archive Drive"
tell application "Finder" to set jobName to name of first item of droppedItems
set localDestination to archivePath & ":" & jobName & "RAW FILES"
do shell script "mkdir -p " & quoted form of POSIX path of localDestination
tell application "Finder"
duplicate droppedItems to folder localDestination
open folder localDestination
end tell
end open
Если вы хотите дублировать только содержимое папок, вам действительно нужен повтор l oop
on open droppedItems
set archivePath to (path to desktop as text) & "Archive Drive"
tell application "Finder" to set jobName to name of first item of droppedItems
set localDestination to archivePath & ":" & jobName & "RAW FILES"
do shell script "mkdir -p " & quoted form of POSIX path of localDestination
tell application "Finder"
repeat with anItem in droppedItems
if class of anItem is folder then
duplicate every item of anItem to folder localDestination
else
duplicate anItem to folder localDestination
end if
end repeat
open folder localDestination
end tell
end open