1

Finderで1つまたは複数のファイルやフォルダを選択しています。それらをクリップボード/ペーストボード(⌘C)に手動でコピーします。

簡単にするために、1つの通常のファイルをコピーしたとしましょう。ただし、理想的なソリューションは、多くのファイルと、フォルダー、エイリアスを使用した混合選択を処理することです。

このファイルがクリップボードにあるので、そのフルパス(できればPOSIXパス)を取得したいと思います。


あなたの時間を節約するために:

  • AppleScript(またはrb-appscript)ソリューションを探しています。
  • 選択範囲から直接パスを取得したくありません。クリップボードのアイテムからのものである必要があります。
  • 実際、最初にパスを選択範囲にコピーしてから、それを使って何でもすることで、これを回避できることを知っています。

私がこれまでに知っていること(rb-appscriptに記載):

  • OSAX.osax.the_clipboardパスのないファイル名の文字列があります。
  • Appscript.app('Finder').clipboard.get明らかに実装されていません(辞書には「まだ利用できません」と表示されています。これを呼び出すと、が返されます:missing_value
4

5 に答える 5

3

次のAppleScriptがうまくいくようです。

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

クリップボードに複数のアイテムがある場合は、最初のアイテムのPOSIXパスのみが返されます。

コマンドについては、 AppleScriptコマンドリファレンスも参照してくださいthe clipboard


rb-appscriptバージョン:

OSAX.osax.the_clipboard(:result_type => :file_url).path
于 2010-08-14T21:04:20.730 に答える
2

これは、最初のパスだけでなく、クリップボードからすべてのposixパスを取得するAppleScriptです...

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
于 2010-08-15T07:14:14.347 に答える
1

Finderはそれが何であるか、そしてAppleScriptはそれが何であるかということであり、それはすべてうまくいかない。それで、なんてこった、私はココアに飛び込んだ。

これらのスクリプトのいずれかが、それぞれ新しい行に絶対パスのリストを返します。

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"))
于 2010-08-23T07:44:34.967 に答える
0

サクラの答えの後に書いたrb-appscriptコードを共有したいと思っただけです。

#!/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
于 2010-08-14T22:18:39.640 に答える
0

Finderで選択したファイルのパスをコピーするソリューションを探していました。これが私が思いついたものです:

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 --——&lt;<

set the clipboard to listPathsClipboard
于 2018-10-19T14:43:41.233 に答える