ファイルのパスをコピーするツールを作ってみました。

エクスプローラを立ち上げてアドレスバーからファイルのパスをコピーするのって面倒ですよね。ということで、ドラッグ & ドロップしたファイルのパスをクリップボードにコピーするプログラムを書いてみました。以前Haskellでも似たようなプログラムを書きました(id:ha-tan:20061215:1166193344)。微妙にUIが違いますが、目的は同じです。
ダウンロードはこちらです。
以下、ソースです。win32-clipboardに依存していますので、このソースを使う人は事前にgem等でwin32-clipboardをインストールしておいてください(バイナリを使う人は不要です)。
ファイル: pthcp.rb

#!/usr/bin/env ruby

require 'pathname'
require 'win32/clipboard'
require 'win32ole'

USAGE = <<END
使い方
======

このプログラムのアイコンにファイルをドラッグ & ドロップしてください。
ファイルのパスをクリップボードにコピーします。

ライセンス
==========

このプログラムのライセンスはLGPLです。

なお、このプログラムはRubyおよびExerbを使用しています。
それぞれ以下のURLからソースコードをダウンロードできます。
- Ruby  <http://www.ruby-lang.org/>
- Exerb <http://exerb.sourceforge.jp/>
END

sh = WIN32OLE.new('WScript.Shell')
if ARGV.empty?
  sh.popup(USAGE, -1, 'pthcp')
  exit 1
end

str = ARGV.map {|a| "<#{Pathname(a).realpath.to_s.gsub(/\//, '\\')}>\n" }.join
Win32::Clipboard.set_data str
sh.popup("以下のパスをコピーしました。\n\n" + str, -1, 'pthcp')

ファイル: pthcp.exy

general:
  startup: pthcp.rb
  core: gui
  kcode: sjis

file:
  pthcp.rb:
  pathname.rb:
    file: C:/Program Files/ruby-1.8/lib/ruby/1.8/pathname.rb
  Win32API.so:
    file: C:/Program Files/ruby-1.8/lib/ruby/1.8/i386-mswin32/Win32API.so
    type: extension-library
  windows/clipboard.rb:
    file: C:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/windows-pr-0.6.5/lib/windows/clipboard.rb
  windows/memory.rb:
    file: C:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/windows-pr-0.6.5/lib/windows/memory.rb
  windows/unicode.rb:
    file: C:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/windows-pr-0.6.5/lib/windows/unicode.rb
  windows/error.rb:
    file: C:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/windows-pr-0.6.5/lib/windows/error.rb
  win32/clipboard.rb:
    file: C:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/win32-clipboard-0.4.2/lib/win32/clipboard.rb
  win32ole.so:
    file: C:/Program Files/ruby-1.8/lib/ruby/1.8/i386-mswin32/win32ole.so
    type: extension-library

ファイル: build.bat

call exerb pthcp.exy
upx pthcp.exe

参照: るびま