2013年2月4日月曜日

スクリーンショットのファイル名の変更 (3)

システムファイルを変更してスクリーンショットのファイル名を変更する方法を説明しましたが、システムファイルを変更するのはできるだけ避けたいと思います。他に方法がなかったり、効果が大きい場合は別ですが。

defaultsコマンドとAutomatorでのシェルスクリプト(実際はrubyスクリプトですが)を組み合わせて実行することにしました。

1. はじめにスクリーンショットを保存するフォルダを作成します。ここでは仮にscreenshotsフォルダとし、適当なフォルダの下に作ります。
上の図では既にファイルが入っていますが、無視してください。

2. defaultsコマンドでスクリーンショットの保存先を、このscreenshotsフォルダに変更します。

$ defaults write com.apple.screencapture location ~/Documents/somewhere/screenshots
$ killall SystemUIServer

保存先の変更は、SystemUIServerの再起動が必要です。

3. Automatorを立ちあげて、フォルダアクションを選びます。

4. フォルダアクション(のワークフロー)を定義するフォルダを、先ほど変更したscreenshotsフォルダに設定します。

5. Automatorのアクションから「シェルスクリプトを実行」を選びます。今回は、rubyスクリプトを使いますので、シェルの種類を/usr/bin/rubyに変更し、下記のようなスクリプトを入力します。書く前は、rubyの方が簡単に書けるかなと思ったのですが、bashなどでもほぼ同等に問題なく書けそうですね。

スクリプト部分は下記のようになっています。ここでは、既にスクリーンショット名の先頭を"ss"にしていることを前提にしています。


re = /^ss \d{4}-\d\d-\d\d \d\d\.\d\d\.\d\d( \d+)?\.png$/
ARGV.each do |f|
if re =~ File.basename(f)
new = File.dirname(f) + "/" + File.basename(f).gsub(" ", "-")
File.rename(f, new) unless File.exists?(new)
end
end

6. フォルダアクションに適当な名前をつけて保存します。ここでは、mvssとしました。

準備は以上で終了です。
使い方は、普通どおりにcommand + shift + 3 や 4 でスクリーンショットを撮るだけです。
"ss 2013-02-14 02.34.56.png"で一旦保存された後、"ss-2013-02-14-02.34.56.png"に自動的に変更されます。
場合によっては、以前書いたpngからgifへの変換も合わせて行なってもいいかもしれません。

0 件のコメント:

コメントを投稿