Alfred Workflow para mover vários arquivos para a pasta Dropbox

4

Sou muito novo no AppleScript. Eu freqüentemente compartilho arquivos do meu computador local com a pasta do Dropbox.

Por exemplo:

From: ~/Work/hello.txt
To: ~/Dropbox/zzz_ShareMe/hello.txt

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

Pesquisei no AppleScript e criei um fluxo de trabalho que copia APENAS UM item, mas como podemos selecionar vários arquivos e copiá-los para o Dropbox com uma tecla de atalho atribuída (ctrl-alt-d)?

O conteúdo de Executar NSAppleScript é fornecido abaixo:

# 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

Eu compartilhei meu fluxo de trabalho preliminar aqui .

Esse fluxo de trabalho funciona para um único arquivo. Se eu selecionar um arquivo no Finder, ctrl-alt-d copia o arquivo para ~/Dropbox/zzz_ShareMe/ , no entanto, se eu selecionar vários arquivos e usar essas teclas nada é copiado .

Como podemos corrigir esse problema?

A ajuda será apreciada.

Links relacionados:

link
link
link

Atualizar Eu tentei outro script, mas ainda falha.

Tarefa necessária:

  1. selecione vários arquivos no Finder
  2. ctrl-alt-d
  3. deve copiar todos os arquivos para ~/Dropbox/zzz_ShareMe/ .

O novo script é fornecido abaixo:

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
    
por astro123 05.05.2018 / 17:03

1 resposta

2

O ideal é que você tenha postado essa pergunta no Alfred Forum . No entanto, o seu problema é bem simples, por isso estou feliz em ajudar aqui.

Essencialmente, o seu AppleScript para o fluxo de trabalho de arquivo único inerentemente limita o processamento de um único arquivo porque a variável source é coagida em um alias , que é um tipo de dados unário (um único valor). Existe uma classe chamada alias list , que - como o nome indica - é adequada para uma lista de aliases.

Você também misturou o AppleScript com o script Bash, que pode ser muito útil em outras situações, mas é um pouco estranho aqui, já que não há motivos para isso. Então, eu vou te dar soluções AppleScript e Bash separadas.

O fluxo de trabalho

Crie um fluxo de trabalho que comprometa o seguinte gatilho de teclas de atalho conectado ao Script de Execução ( não Executar NSAppleScript ) ação (consulte as páginas da Ajuda do Alfred para obter mais informações sobre essas duas ações, mas, em geral, você nunca precisará usar Executar ação NSAppleScript ):

Cliqueduasvezesnogatilhodatecladeatalhoparaconfigurá-lo.Naprimeiraguia(Configuraçõesdeteclasdeatalho),presumoquevocêsaibacomodefiniratecladeatalhodesejada.Noentanto,definatambémocampoArgumentparaSeleçãonomacOS.

Nasegundaaba(AplicativosRelacionados),vocêpodelimitaraaçãodatecladeatalhoparaqueelafuncionesomentequandooFindertiverfoco.ArrasteoíconedoaplicativodoFinderparaacaixadelistagemparafazerisso(amaneiramaisfáciléacionarocampodebuscadoAlfred,digite"Finder" e arraste o ícone daqui para lá).

Salve as configurações.

O script

Clique duas vezes na ação Executar script para abrir o painel do editor. Você pode selecionar o idioma desejado na primeira lista suspensa: os dois que nos interessam para o propósito desta pergunta são /bin/bash (ou sua lista equivalente) entrada) e /usr/bin/osascript (AS) (ou equivalente).

osascript é o mecanismo que compila e executa os AppleScripts.

AS refere-se ao AppleScript; JS refere-se ao JavaScript.

Bash

Se você optar por usar o Bash, selecione com entrada como argv . Exclua qualquer código de amostra exibido no campo de edição e insira este código:

cp "$@" ~/Dropbox/zzz_ShareMe

AppleScript

Se você escolher AppleScript, o tipo de entrada não importa aqui. Exclua qualquer código de amostra exibido no campo de edição e insira este código:

tell application "Finder" to reveal ¬
    (duplicate (selection as alias list) ¬
    to folder "zzz_ShareMe" ¬
    of folder "Dropbox" ¬
    of home)
    
por 05.05.2018 / 18:58