Copiar archivos al portapapeles con AppleScript

11

A menudo me encuentro en la línea de comando queriendo copiar archivos al portapapeles, para poder pegarlos como archivos adjuntos en el correo. Si tengo un archivo de imagen image1.png, puedo lograr esto con

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

Si ejecuto el comando anterior y luego abro un nuevo mensaje en Mail y presiono el comando V, el archivo de imagen se pega como un archivo adjunto. Tenga en cuenta que pbcopyaparentemente no es una solución aquí, porque esto copiaría el contenido del archivo y daría lugar a basura cuando se pega con el comando V.

Mi pregunta es ¿cómo puedo hacer lo mismo con varios archivos? Supongamos que quiero pegar ambos image1.pngy image2.png. Esto es trivial desde Finder (selecciónelos a ambos, comando C, luego cambie a Correo y comando V; listo, ambos archivos aparecen como archivos adjuntos) ... pero ¿cómo puedo hacer esto desde la línea de comandos?

JCOidl
fuente
1
Esto es TAN doloroso en el tuckus de AppleScript. Recomendaría elegir uno de los administradores de portapapeles programables o usar Cocoa NSPasteboard a través de su lenguaje de secuencias de comandos favorito. Otra opción puede ser crear una acción de carpeta, para que pueda copiar archivos a la carpeta, luego hacer que Finder seleccione todos los elementos de la carpeta, los copie en el portapapeles y vacíe la carpeta. Si solo desea enviar los archivos por correo electrónico como archivos adjuntos, una alternativa es recorrer en iteración su lista y crear Correo → nuevo mensaje saliente → contenido → archivos adjuntos de correo.
Art Taylor
1
@ArtTaylor, gracias por las opciones. Estoy trabajando en un Applescript que hace lo último que mencionaste, básicamente algo que le dirá a Mail que make new attachment with properties {file name:this_file} at after last paragraphuse un ciclo de repetición argv. Sin embargo, me pregunto si la respuesta a la pregunta original es simplemente "no se puede hacer esto con Applescript".
JCOidl
Realmente tengo ese sentimiento, pero odio decir "no puedo". Creo que la dificultad es realmente crear una solución general, ya que el Portapapeles contiene varias versiones del contenido del portapapeles, lo que permite al destinatario de pegar elegir una representación adecuada.
Art Taylor

Respuestas:

1

Esto no es perfecto para lo que quieres, pero creo que podría acercarte. Quicksilver tiene una herramienta de línea de comando. Cuando está instalado, puede canalizar archivos desde la línea de comandos a la aplicación Quicksilver, y desde allí enviarlos como archivos adjuntos en Correo.

Para instalar la herramienta de línea de comandos Quicksilver, active Quicksilver. Luego navegue a Quicksilver> Preferencias para abrir la ventana de preferencias. Haga clic en Preferencias en la esquina superior derecha de la ventana. A la izquierda, haga clic en Herramienta de línea de comandos e instálela.

En la Terminal, podrás escribir

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

Al presionar enter, se enviarán esos archivos al primer panel de Quicksilver. Presione la pestaña para moverse al panel de acciones y elija la acción Correo / Nuevo correo electrónico con archivo adjunto. Presione Intro y aparecerá un nuevo correo electrónico con los archivos seleccionados adjuntos.

Tenga en cuenta que también tendrá que instalar los complementos de Correo y Línea de comandos en Quicksilver (Quicksilver> Preferencias> Complementos).

Sojourner
fuente
1

Puedes hacer 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

Ahora su tablero contiene múltiples archivos (de varias carpetas) que puede pegar en su correo.

Bibou
fuente
-5

¿Por qué no simplemente arrastrar y soltar? A veces, los técnicos se vuelven demasiado complejos y olvidan las cosas simples que puede hacer una Mac.

Zo219
fuente
Guau. Tres personas que se oponen a arrastrar y soltar.
Zo219
3
No, las personas que se oponen a una respuesta de "¿Por qué no simplemente arrastrar y soltar?" a una pregunta que pregunta sobre cómo hacer algo con AppleScript.
Duncan Babbage