ショートカットのリンク先を工夫すればOK。
単純に.ps1へのショートカットを作ってもダメ。.ps1を開く既定のハンドラが登録されていないので。
次のような記事もあるくらいだし、漠然とbatファイル経由でないとダメだと思っていた。
- PowerShellスクリプトファイル(.ps1)にファイルをドラッグ&ドロップして処理する - Qiita
- Windows PowerShellスクリプトにDrag&Dropはできない - Lazy Diary @ はてな
でも次のような記事を見つけて試してみたらうまくいった。
- windows 7 - Running powershell scripts by drag-n-drop file or folder on it - Super User
- Powershellを楽に実行してもらうには - Qiita
つまり、適当なショートカットを作成して、リンク先を powershell -NoProfile -File ファイル名(.ps1)
とすればOK。
色々オプションもあるみたいなので注意。
$Args
にちゃんとドロップしたファイルのパスが格納される。空白文字が入っているパスでも大丈夫。UNCでも大丈夫。
考えてみれば当たり前の話なのかもしれないけど、この方法でちゃんとドロップしたファイル名だけが $Args
に入るというのはちょっと不思議なような気もする。 -File ファイル名.ps1
の後に適当な文字列を入れて試すとその文字列は $Args[0]
に入るのでそういう仕様みたい。
[…] ちょっとした変換作業を効率化するためにbatを書いていたらファイル名の扱いで困った(空白を含むパスやネットワークパスの扱いが絶望的に面倒くさい)ので代わりにPowerShellでやったら(前回)すんなりうまくいったので 、気をよくしてPowerShellについて少しは真面目に勉強してみました。PowerShellってとっつきにくくて何となく見よう見まねで細部は気にせず適当にやり過ごしていたのですが、知らずに使うのも気持ちが悪いですし。 […]