Copie de fichiers dans le presse-papiers en utilisant applescript

11

Souvent, je me retrouve sur la ligne de commande à vouloir copier des fichiers dans le presse-papiers, afin de pouvoir les coller comme pièces jointes dans Mail. Si j'ai un fichier image image1.png, je peux le faire avec

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

Si j'exécute la commande ci-dessus, puis ouvre un nouveau message dans Mail et appuie sur la commande V, le fichier image est collé en tant que pièce jointe. Notez que ce pbcopyn'est apparemment pas une solution ici, car cela copierait le contenu du fichier et entraînerait des déchets lorsqu'il serait collé avec la commande V.

Ma question est de savoir comment puis-je faire la même chose avec plusieurs fichiers? Supposons que je veuille coller les deux image1.pnget image2.png. C'est trivial à partir du Finder (sélectionnez-les tous les deux, commande C, puis passez à Mail et commande V; le tour est joué, les deux fichiers s'affichent en tant que pièces jointes)… mais comment puis-je le faire à partir de la ligne de commande?

JCOidl
la source
1
C'est TELLEMENT une douleur dans le tuckus d'AppleScript. Je recommanderais de choisir l'un des gestionnaires de presse-papiers scriptables ou d'utiliser Cocoa NSPasteboard via votre langage de script préféré. Une autre option peut être de créer une action de dossier, afin que vous puissiez copier des fichiers dans le dossier, puis que le Finder sélectionne tous les éléments du dossier, les copie dans le presse-papiers et vide le dossier. Si vous souhaitez simplement envoyer les fichiers sous forme de pièces jointes, une alternative consiste à parcourir votre liste et à créer Courrier → nouveau message sortant → contenu → pièces jointes.
Art Taylor
1
@ArtTaylor, merci pour les options. Je travaille sur un Applescript qui fait la dernière chose que vous avez mentionnée, essentiellement quelque chose qui dira à Mail make new attachment with properties {file name:this_file} at after last paragraph, en utilisant une boucle de répétition argv. Je me demande cependant si la réponse à la question d'origine est simplement "vous ne pouvez pas faire cela avec Applescript".
JCOidl
J'ai vraiment ce sentiment, mais je déteste dire "ne peut pas". Je pense que la difficulté est vraiment de créer une solution générale puisque le Pasteboard contient plusieurs versions du contenu du presse-papiers, permettant au destinataire de la pâte de choisir une représentation appropriée.
Art Taylor

Réponses:

1

Ce n'est pas tout à fait parfait pour ce que vous voulez, mais je pense que cela pourrait vous rapprocher. Quicksilver dispose d'un outil en ligne de commande. Une fois installé, vous pouvez diriger des fichiers de la ligne de commande vers l'application Quicksilver, puis les envoyer en tant que pièces jointes dans Mail.

Pour installer l'outil de ligne de commande Quicksilver, activez Quicksilver. Ensuite, accédez à Quicksilver> Préférences pour ouvrir la fenêtre des préférences. Cliquez sur Préférences en haut à droite de la fenêtre. Sur la gauche, cliquez sur Outil de ligne de commande et installez.

Dans Terminal, vous pourrez taper

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

Appuyez sur Entrée pour envoyer ces fichiers vers le premier volet de Quicksilver. Appuyez sur l'onglet pour accéder au volet Actions et choisissez l'action Courrier / Nouvel e-mail avec pièce jointe. Appuyez sur Entrée et un nouvel e-mail avec les fichiers sélectionnés en pièce jointe devrait apparaître.

Notez que vous devrez également installer les plug-ins de messagerie et de ligne de commande dans Quicksilver (Quicksilver> Préférences> Plug-ins).

Sojourner
la source
1

Vous pouvez faire quelque chose comme:

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

Maintenant, votre table de montage contient plusieurs fichiers (provenant de divers dossiers) que vous pouvez coller dans votre courrier.

Bibou
la source
-5

Pourquoi ne pas simplement glisser-déposer? Parfois, les techniciens deviennent trop complexes et oublient les choses simples qu'un Mac peut faire.

Zo219
la source
Sensationnel. Trois personnes qui s'opposent au glisser-déposer.
Zo219
3
Non, les gens qui s'opposent à une réponse de "Pourquoi ne pas simplement glisser-déposer?" à une question qui demande comment faire quelque chose avec AppleScript.
Duncan Babbage,