Copiando arquivos para a área de transferência usando o AppleScript

11

Muitas vezes me encontro na linha de comando que deseja copiar arquivos para a área de transferência, para que eu possa colá-los como anexos no Mail. Se eu tiver um arquivo de imagem image1.png, posso fazer isso com

osascript -e 'tell app "Finder" to set the clipboard to ( POSIX file "image1.png" )'

Se eu executar o comando acima e abrir uma nova mensagem no Mail e pressionar o comando V, o arquivo de imagem será colado como um anexo. Observe que pbcopyaparentemente não é uma solução aqui, porque isso copiaria o conteúdo do arquivo e resultaria em lixo quando colado com o comando V.

Minha pergunta é como posso fazer a mesma coisa com vários arquivos? Suponha que eu queira colar ambos image1.pnge image2.png. Isso é trivial no Finder (selecione os dois, comando C, depois mude para Correio e comando V; voila, os dois arquivos aparecem como anexos) ... mas como posso fazer isso na linha de comando?

JCOidl
fonte
1
É uma dor de cabeça do AppleScript. Eu recomendaria escolher um dos gerenciadores de área de transferência com script ou usar o Cocoa NSPasteboard através da sua linguagem de script favorita. Uma outra opção pode ser a de criar uma ação de pasta, para que você possa copiar arquivos para a pasta e fazer com que o Finder selecione todos os itens da pasta, copie-os para a área de transferência e esvazie a pasta. Se você quiser apenas enviar os arquivos por email como anexos, uma alternativa é percorrer sua lista e criar Correio → nova mensagem de saída → conteúdo → anexos de correio.
Art Taylor #
1
@ArtTaylor, obrigado pelas opções. Estou trabalhando em um Applescript que faz a última coisa que você mencionou, basicamente algo que dirá ao Mail make new attachment with properties {file name:this_file} at after last paragraph, usando um loop de repetição argv. Gostaria de saber se a resposta à pergunta original, no entanto, é simplesmente "você não pode fazer isso com o Applescript".
JCOidl
Eu realmente tenho esse sentimento, mas odeio dizer "não posso". Eu acho que a dificuldade está realmente em criar uma solução geral, já que o Pasteboard contém várias versões do conteúdo da área de transferência, permitindo que o destinatário da pasta escolha uma representação apropriada.
Art Decay

Respostas:

1

Isso não é perfeito para o que você quer, mas acho que pode te aproximar. O Quicksilver possui uma ferramenta de linha de comando. Quando instalado, você pode canalizar arquivos da linha de comando para o aplicativo Quicksilver e, a partir daí, enviá-los como anexos no Mail.

Para instalar a ferramenta de linha de comando Quicksilver, ative o Quicksilver. Em seguida, navegue até Quicksilver> Preferências para abrir a janela de preferências. Clique em Preferências no canto superior direito da janela. À esquerda, clique em Command Line Tool e instale.

No Terminal, você poderá digitar

qs path/to/file1 path/to/file2 path/to/file3 path/to/file4

Pressionar enter enviará esses arquivos para o primeiro painel do Quicksilver. Pressione a tecla Tab para ir para o painel de ações e escolha a ação Correio / Novo email com anexo. Pressione enter e um novo e-mail com os arquivos selecionados anexados deverá aparecer.

Observe que você também precisará instalar os plugins Mail e Command Line no Quicksilver (Quicksilver> Preferências> Plug-ins).

Sojourner
fonte
1

Você pode fazer algo como:

set f to {(POSIX file "/path/to/a/folder/a.png"), (POSIX file "/path/to/another/folder/b.png")}
tell application "Finder"
    try -- to delete any old temp folder
        delete folder "AS_mailCopy" of (path to temporary items)
    end try
    set tmp to make new folder at (path to temporary items) with properties {name:"AS_mailCopy"}
    duplicate f to tmp
    select files of tmp
    activate
    tell application "System Events" to keystroke "c" using command down
    delete tmp
end tell

Agora sua área de trabalho contém vários arquivos (de várias pastas) que você pode colar no seu email.

Bibou
fonte
-5

Por que não apenas arrastar e soltar? Às vezes, os técnicos ficam muito complexos e esquecem as coisas simples que um Mac pode fazer.

Zo219
fonte
Uau. Três pessoas que se opõem a arrastar e soltar.
Zo219
3
Não, pessoas que se opõem a uma resposta de "Por que não apenas arrastar e soltar?" a uma pergunta que pergunta sobre como fazer algo com o AppleScript.
Duncan Babbage