【Chrome拡張】ファイルの種類やドメインで保存先を切り替えてくれる「Downloads Router」が便利!

こんにちは、えんぞーです。
100 円ショップで目の醒める飴(コーヒー)というのが売っていたので試しに買ってなめてみたらとても不味くて目が醒めました。
一人で「こういうことなの!?」と突っ込んでいたのですが、なぜかその不味さがクセになってまた買ってきました。何かやばい成分でも入っているのでしょうか。
ネットでダウンロードしたファイルの行方
ネットをしていれば何かしらのファイルをダウンロードしますよね。画像だったり文章だったり何でも良いですが。
で、ダウンロードファイルは Chrome の通常設定では決まった場所に保存されているはずです。
私の場合はファイルによって保存先を変えたいときが多々あるので毎度ダイアログを開くようにしています。

メニューの「設定」→「詳細設定を表示…」をクリックすることで「ダウンロード」の設定項目が出てきます。
この設定をしていて面倒なのがフォルダの移動です。
しかも一定の間隔で決まったファイルをダウンロードする事があり、それが数パターンあったりします。
ショートカット作ってみたり一度ダウンロードしてそこから振り分けたりと色々試してみたのですけどね・・・面倒になってやめてしまいます。
この微妙な手間をいつかは解決したいと思いつつもそこまでクリティカルな問題でも無いので放置していたのですが、最近本当に嫌になったので一念発起して解決に乗り出しました。
常々思っていた理想の形は
ドメイン毎に保存場所を切り替えてくれる拡張
これです。
意識しなくとも適した場所に保存出来れば一番良いので。
昔、そういう拡張無いかなと思って少し探した事もあったのですがその時は見つからず諦めました。。
今回も探してみて無かったら無理矢理にでも自作してしまおうと考えていたのですが、少し探してみたらそれっぽいの発見しました。
結論から言うと探していた機能ズバリだったのですが、私の希望を叶えるためには一工夫必要でした。
「Downloads Router」で保存先を切り替える
具体的にどんな拡張なのかをざっくりと言いますと、
- ファイルタイプ(MIME)で保存場所を切り替えられる
- リファラー(ドメイン)で保存場所を切り替えられる
- ファイル名(キーワード)で保存場所を切り替えられる
このような機能になっているようです。
ルールは上記リストの上の方から順に見ていくようで、どこにも当てはまらなかったらブラウザのデフォルト設定になるようです。
上記で説明した「ファイルごとに保存する場所を確認する」のチェックを付けている場合は指定したフォルダでダイアログが表示され、チェックが付いていない場合はそのまま指定した場所に保存されると言った動きになります。
う~ん、これが本当にそうならとっても便利。
早速インストールして試して見ました。

ブログで使用する画像でいつもお世話になっている「photopin.com」からのダウンロードは E ドライブの「_img」に保存するようにしました。
が、しかし。動作せず。
前回の保存場所がダイアログに出てきてしまいます。
せっかく見つけた拡張です。そんなにすぐすぐ諦められないので色々調べてみると(すぐ出てきたけども)・・・
どうやら Chrome 側の制限により指定出来るダウンロードフォルダは設定されている保存場所以下でならないという事らしいです。
どういう事かと言いますと、Chrome 側で設定している保存場所が「C:Download」という場所であればそこよりも下の階層でないと指定出来ないという事になります。
この瞬間に
あ。使えねぇ、これ。
と思ってしまいましたが、作者様は解決策を提案していてくれました。
シンボリックリンクを貼ればどこにでも保存出来る
解決策はシンボリックリンクを貼るという単純な方法です。
WindowsVista 以降であればシンボリックを作成出来るのでその機能を使って他の場所にあるフォルダに保存出来ます。
シンボリックリンクを設定しやすくするためにシェル拡張をインストールしてしまいましょう。
ちなみに Linux ではお馴染みのシンボリックリンクですが Windows ではまだ馴染みが無いかも知れません。平たく言うとショートカットになります。
じゃ、ショートカットで良いじゃ無いかと言う事になりますが、Windows のショートカットというのは単に行き先が書いてあるだけのファイルであってファイルやフォルダそのものとしては扱えません。
「c:\hoge」という場所のショートカットを「d:\download.lnk」として作った場合、「download.lnk」をダブルクリックすれば「c:hoge」に飛びますがそれだけです。
「d:\download.lnk」は「c:\hoge」と同じ場所として扱えません。
シンボリックリンクだと「d:\download」と「c:\hoge」は同じ場所を指すことになります。
極端に例えると「どこでもドア」と「タケコプター」、「瞬間移動」と「舞空術」の様な隔たりがありますのでご注意ください。
Link Shellextension のダウンロードとインストール
それではシンボリックリンクを簡単に使えるようにするためにシェル拡張をインストールしましょう。
こちらを動かすためにはランタイムが必要らしいので環境によってダウンロードしてインストールしましょう。
Chocolatey でインストールしたい方は下記のコマンドにてインストールしてください。
Visual C++ 2005 再頒布可能パッケージ (64bit)
Visual C++ 2005 再頒布可能パッケージ (x86)

ランタイム、シェル拡張とインストールして再起動します。
インストールは特に何も変えたりする部分はないのでウィザードの通りに進めば終わります。
拡張のインストール時に言語のダイアログが出ますのでそれだけ「Japanase」にすれば OK だと思います。
↓ こんなの。

Chocolatey でインストールする場合
1choco install linkshellextension
シンボリックリンクを張ってもう一度試してみる
さて、これで環境は整いましたのでさっそくシンボリックリンクを張ってみようと思います。
まずは、ダウンロードファイルを保存したいフォルダがある場所に行き対象のフォルダを右クリックします。
今回の例で言うと「E:_catch_img」になります。

次に Chrome のダウンロードフォルダに設定しているフォルダに行きます。今回は「C:UsershogeDownloads」です。
そこで右クリックして「リンクを作成」→「シンボリックリンク」を選択するとシンボリックリンクの完成です。
ちなみに作成したシンボリックリンクは普通に消して大丈夫です。リンク元のフォルダごと消えたりしませんのでご安心を。

試しにシンボリックリンクをクリックしてみましょう。リンク元のフォルダにアクセスできれば OK です。
コマンドライン大好きっ子であればこちら
余計なものはインストールしないよって方はこちらの方法でシンボリックリンクを作成しましょう。
※コマンドプロンプトは管理者権限で起動。

#コマンド
mklink /prefix link_path file/folder_path

#今回の例だとこうなります
mklink /D C:UsershogeDownloads_img E:_catch_img
再度「Downloads Router」を試してみる
今度はシンボリックリンクを作ったのでリンクの指定はこのようになります。Chrome の設定したフォルダからの相対パスですね。

photopin.com から試しにダウンロードしてみましょう。


ちゃんと指定したフォルダに切り替わっています。
もちろんシンボリックリンクなので実際のファイルは「E:_catch_img」の中に保存されております。

あとはダウンロードのファイルやサイト別ごとにルールを作っていけばファイルの保存時にあっち行ったりこっち行ったりしなくて済むとなるわけですね。
よかったよかった。
とりとめのないまとめ
ダウンロードファイルの保存先にいちいち移動していた生活から脱却できました。同じような悩みを持っている人がいればぜひお勧めします。
シンボリックリンクのくだりに関しては設定した保存場所以下の階層でフォルダ分けする場合必要の無い工程なので普通はそれで良いかもしれません。
どうしても決まった場所にダウンロードしておきたい場合のみシンボリックリンクを貼ってあげましょう。