AppleScript: Ho copiato la selezione Finder negli appunti. Posso ottenere il percorso completo per gli elementi copiati?

StackOverflow https://stackoverflow.com/questions/3485061

Domanda

Ho uno o più file e / o cartelle selezionate nel Finder. Ho manualmente copiarli negli appunti / cartone ( ⌘C ).

Per semplificare le cose, diciamo che ho appena copiato un unico file normale. La soluzione ideale, però, sarebbe che fare con molti file e una selezione mista con le cartelle, gli alias.

Ora che questo file è nella clipboard, voglio ottenere il percorso completo (preferibilmente il percorso POSIX).


Per risparmiare tempo:

  • Sto cercando un AppleScript (o rb-appscript) soluzione.
  • Non voglio per ottenere il percorso direttamente dalla selezione. Deve essere dalla voce negli Appunti.
  • In realtà, so che posso percorso intorno a questo copiando il percorso (s) per la selezione, poi fare quello che sono fino a con esso.

Quello che so finora (indicato nella RB-appscript):

  • OSAX.osax.the_clipboard ha una serie di nomi di file senza il percorso.
  • Appscript.app('Finder').clipboard.get è a quanto pare non implementata dizionario (dice "non ancora disponibile"; chiamando restituisce :missing_value
  • .
È stato utile?

Soluzione

Il seguente AppleScript sembra fare il trucco:

POSIX path of (the clipboard as «class furl»)

Se non ci sono più elementi negli Appunti, verrà restituito il percorso POSIX del primo elemento unico.

Vedere anche la di riferimento dei comandi AppleScript per il comando the clipboard.


Versione RB-appscript:

OSAX.osax.the_clipboard(:result_type => :file_url).path

Altri suggerimenti

Ecco un AppleScript che otterrà tutti i percorsi POSIX dagli appunti, non solo il primo ...

set theFiles to paragraphs of (get the clipboard)

set posixPaths to {}
repeat with aFile in theFiles
    try
        tell application "Finder" to set thePath to item aFile as text
        set end of posixPaths to (POSIX path of thePath)
    end try
end repeat
return posixPaths

appena ho pensato di condividere il codice di RB-appscript che ho scritto dopo la risposta di Sakra:

#!/usr/bin/arch -i386 /usr/bin/ruby
require "rubygems"
require "osax"
include OSAX


def path_from_clipboard
  osax.clipboard_info.flatten.include? :file_url or raise "clipboard does not contain path data" 
  osax.the_clipboard.count("\r") == 0            or raise "clipboard contains more than one path"
  osax.the_clipboard(:result_type => :file_url).path
end

puts path_from_clipboard

Il Finder è quello che è, e AppleScript è quello che è, è tutto troppo non riescono ad andare in giro. Quindi, che diavolo, ho saltato in Cocoa.

Uno di questi script restituirà l'elenco dei percorsi assoluti ciascuna su una nuova linea.

MacRuby:

#!/usr/bin/env macruby
# encoding: UTF-8
framework 'Cocoa'
puts NSPasteboard.generalPasteboard.pasteboardItems
  .map { |pbi| pbi.stringForType('public.file-url') }.compact
  .map { |url| NSURL.URLWithString(url).path }

Nu:

#!/usr/bin/env nush
(puts ((((((NSPasteboard generalPasteboard) pasteboardItems)
  map:    (do (pbi) (pbi stringForType: "public.file-url")))
  select: (do (url) (url)))
  map:    (do (url) ((NSURL URLWithString: url) path))) componentsJoinedByString: "\n"))

Ero alla ricerca di una soluzione che copiare il percorso dei file selezionati nel Finder. Ecco quello che mi si avvicinò con:

set ASTID to AppleScript's text item delimiters --——>>
set AppleScript's text item delimiters to return

tell application "Finder" to set sel to the selection as text

set listPaths to {}
repeat with pth in paragraphs of sel
    set end of listPaths to POSIX path of pth
end repeat

set listPathsClipboard to listPaths as text
set AppleScript's text item delimiters to ASTID --——<<

set the clipboard to listPathsClipboard
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top