なにか作る

なにかを作るブログです。

「送る」with PowerShell

解決したい課題

メールで受信した添付ファイルをファイルサーバーに保管することがあると思う。こんな感じで。

f:id:ptiringo:20161218105438p:plain

これ、ファイルのやりとりが頻繁に発生するような場合、地味に辛い。
ファイルが来るたびに、

添付ファイルを展開 → ファイルサーバー上にフォルダを作成 → ファイルを移動

という作業がいちいち発生するからだ。

そもそも、メールでファイルのやりとりを頻繁に行うのがどうなのかという話はもちろんあるのだが、その話は一旦置いておいてこの作業を簡略化したい。

どうするか

Windows を使っているならば「送る」に新たなメニューを自作するのがよさそうだ。「送る」のメニューは結構簡単に作成することができて、送る対象のファイルに対して任意のプログラムを実行させることも可能である。

参考にしたサイト:Windows PowerShell 第2回 「送る」を使用したスクリプト実行 | 役に立つIT

PowerShell スクリプト

  • args[0] はスクリプト実行時に引数として与える移動先のパス。
  • args[1] は送る対象のファイルのパス(このパスは args の最後の要素として追加されるようだ)。

具体的手順

  1. ファイル名を指定して実行で「shell:sendto」を実行し、「送る」フォルダを表示する。
  2. フォルダ内に上記スクリプトのショートカットを配置する。
  3. ショートカットのファイル名が「送る」での表示名として使用されるので適切な名前に変更する。
  4. ファイルのプロパティを表示し、リンク先を以下のように変更する。

powershell -WindowStyle Hidden -File "C:¥batch¥sendto.ps1" "¥¥remote-server¥shared-folder¥toaru-folder"

完成。あとは、送りたいファイル名を右クリックして「送る」の中の該当のものを選択すれば(ちょっと時間は掛かるが)移動できる。複数のファイルを選択して移動させることも可能だ(ディレクトリ名はそのうちの一つのファイル名から拝借することにしている)。

複数の送り先を登録した場合には、ショートカットを複数作成してリンク先で渡すパスをそれぞれの送り先のパスに変更すれば OK。