Mac で撮ったスクリーンキャプチャのファイル名に含まれる半角スペースを Automator でどうにかする

Mac でスクリーンキャプチャを撮ると、スクリーンショット 2018-10-22_22.27.08.png のような感じでファイル名に半角スペースが含まれてしまいます。 スクリーンショット の部分はコマンドで変更できます (無しにもできる) が、その部分と日付の間には半角スペースが入ってしまいます。

コマンドラインでファイルを扱う際には半角スペースがあると面倒なので、どうにかして半角スペースを無くしたい、というのが今回の目的です。 とりあえず、半角スペースをアンダースコア _ に変換することをゴールにします。

前準備

スクリーンキャプチャの保存先を適当なフォルダに設定します。

$ defaults write com.apple.screencapture location /Users/hoge/Pictures/_ScreenCaptureTmp
$ killall SystemUIServer

今回は /Users/hoge/Pictures/_ScreenCaptureTmp とします。(TMP_SC_DIR) スクリンキャプチャはこのフォルダに作成されます。半角スペースをファイル名に含んだ状態で。

そして、本当にスクリーンキャプチャを保存したいディレクトリを用意します。 今回は /Users/hoge/Dropbox/200_photos/001_SC_MBP とします。(COMP_SC_DIR)

どうするか (概要)

  1. 以下を実現するスクリプトを作ります (今回は Python で作りました)
    • TMP_SC_DIR 内のファイルのファイル名に含まれる半角スペースをアンダースコアに置換する
    • ファイル名を置換したファイルを COMP_SC_DIR に移動する
  2. スクリーンキャプチャを撮るたびに 1 のスクリプトを実行する

どうするか (詳細)

1 を実現するスクリプトを作成

import glob
import os

TMP_SC_DIR = '/Users/hoge/Pictures/_ScreenCaptureTmp/'
COMP_SC_DIR = '/Users/hoge/Dropbox/200_photos/001_SC_MBP/'
i = 1

tmp_sc_list = glob.glob(TMP_SC_DIR + '*.png')
if len(tmp_sc_list) == 0:
    print('no screen capture.')
else:
    for file in tmp_sc_list:
        os.rename(
            file, file.replace(TMP_SC_DIR, COMP_SC_DIR).replace(' ', '_'))
        i += 1

    print(
        '{} screen capture(s) rename and move, completely.'
        .format(str(len(tmp_sc_list))))

これを適当な場所に置きます。 今回は /Users/hoge/Projects/system/rename_and_move_screen_capture.py とします。

Automator でフォルダアクションを作成

Automator は Mac での様々な操作を自動化してくれるアプリケーションで、デフォルトで入っています。 今回はその Automator で

1.TMP_SC_DIR を監視する 2. ファイルが置かれたら rename_and_move_screen_capture.py を実行する 3. 実行結果を通知する

というフローを実行するフォルダアクションを作成します。

bb4201e2-c590-677c-6297-e46c9930e51f.png

設定についてはキャプチャのとおりです。

8a9d9910-87b2-1cdb-492a-a99395cae078.png

変数の値を設定 は、スクリプトを実行したときに出力しているメッセージを変数に設定して、通知の際に表示させるために入れています。

で、これを適当な名前で保存してスクリーンキャプチャを撮って数秒後に通知がきます。

bfd6888f-7cc9-9010-a077-1f72aa2a74ae.png

これでスクリーンキャプチャの半角スペース問題はなんとかなりました。

comments powered by Disqus