Альфред Рабочий процесс для перемещения нескольких файлов в папку Dropbox

354
astro123

Я очень новичок в AppleScript. Я часто делюсь файлами со своего локального компьютера в папку Dropbox.

Например:

From: ~/Work/hello.txt To: ~/Dropbox/zzz_ShareMe/hello.txt  cp ~/Work/hello.txt ~/Dropbox/zzz_ShareMe/ # or, just copy files from finder 

Я погуглил про AppleScript и придумал рабочий процесс, который копирует ТОЛЬКО ОДИН элемент, но как мы можем выбрать несколько файлов и скопировать их в Dropbox с помощью назначенной горячей клавиши (ctrl-alt-d)?

Содержимое Run NSAppleScript приведено ниже:

# Note: we should have ~/Dropbox/zzz_ShareMe folder # on alfred_script(q) tell application "Finder" set source to (POSIX path of (the selection as alias)) do shell script "cp -r" & space & quoted form of POSIX path of source & space & "~/Dropbox/zzz_ShareMe"  end tell end alfred_script 

Я поделился своим предварительным рабочим процессом здесь .

Этот рабочий процесс работает для одного файла. Если я выбираю файл в Finder, ctrl-alt-d копирует файл ~/Dropbox/zzz_ShareMe/, однако, если я выбрал несколько файлов и использовал эти горячие клавиши, то ничего не копируется .

Как мы можем решить эту проблему.

Помощь будет оценена.

Ссылки по теме:

http://www.packal.org/workflow/move
http://www.packal.org/workflow/copymove
https://www.alfredforum.com/topic/4195-move-selected-finder-item/

Обновление Я попробовал другой скрипт, но он все равно не работает.

Обязательное задание:

  1. выбрать несколько файлов в Finder
  2. Ctrl-Alt-D
  3. он должен скопировать все файлы в ~/Dropbox/zzz_ShareMe/.

Новый скрипт приведен ниже:

on alfred_script(q)   tell application "Finder"  set source to selection  end tell  if (count of source) is greater than 1 then  set fileList to every item of source  repeat with source in fileList  doMove(source, q)  end repeat  else  doMove(source, q)  end if  end alfred_script  on doMove(source, destination)  set source to (POSIX path of (the source as alias))  set destination to "~/Dropbox/zzz_ShareMe"   do shell script "cp -r" & space & quoted form of POSIX path of source & space & POSIX path of destination  end doMove 
4

1 ответ на вопрос

2
CJK

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

По сути, ваш AppleScript для рабочего процесса с одним файлом сам по себе ограничивается обработкой одного файла, потому что переменная sourceприведена к aliasтипу, который является унарным типом данных (одно значение). Существует класс с именем alias list, который, как следует из названия, подходит для списка псевдонимов.

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

Рабочий процесс

Создайте рабочий процесс, который скомпрометирует следующий триггер горячей клавиши, связанный с действием Run Script ( не Run NSAppleScript ) ( для получения дополнительной информации об этих двух действиях обратитесь к страницам справки Alfred, но, вообще говоря, вам никогда не потребуется использовать действие Run NSAppleScript ) :

Альфред Рабочий процесс

Дважды щелкните триггер горячей клавиши, чтобы настроить его. На первой вкладке ( Настройки горячей клавиши) я предполагаю, что вы знаете, как установить нужную горячую клавишу. Однако, также установите поле Аргумент в Выбор в macOS .

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

Сохраните настройки.

Сценарий

Дважды щелкните действие « Выполнить сценарий», чтобы открыть панель редактора. Вы можете выбрать нужный язык в первом раскрывающемся списке: для целей этого вопроса нас интересуют два /bin/bash(или ваша эквивалентная запись в списке) и /usr/bin/osascript (AS)(или эквивалентный).

osascript это механизм, который компилирует и выполняет AppleScripts.

ASотносится к AppleScript; JSотносится к JavaScript.

удар

Если вы решите использовать Bash, выберите с вводом как argv . Удалите любой пример кода, который появляется в поле редактирования, и введите этот код:

cp "$@" ~/Dropbox/zzz_ShareMe 

AppleScript

Если вы выбираете AppleScript, тип ввода здесь не имеет значения. Удалите любой пример кода, который появляется в поле редактирования, и введите этот код:

tell application "Finder" to reveal ¬ (duplicate (selection as alias list) ¬ to folder "zzz_ShareMe" ¬ of folder "Dropbox" ¬ of home) 

Похожие вопросы