PowerShellのスクリプトファイルを利用していると、バッチファイルのようにスクリプトファイルにファイルをドラッグ&ドロップして処理を実行したいときがあります。
ですが、PowerShellスクリプトファイル自体には、ファイルをドラッグ&ドロップすることができません。
そんなときは、ショートカットファイルやバッチファイルを経由することで、ドラッグ&ドロップしたファイルをPowerShellスクリプトの引数として処理させることができます。
目次
事前準備
ドラッグ&ドロップしたファイルを引数として受け取れているかを確認するために、次のようなテスト用PowerShellスクリプトファイル「sample.ps1」を用意しておきます。
ちなみに、スクリプトファイルの引数は$argsに格納されます。
foreach ($arg in $args) {
echo $arg
Read-Host "続けるには Enter キーを押してください。"
}
ショートカットを経由する方法
ドラッグ&ドロップしたファイルをPowerShellスクリプトの引数として処理させる一つ目の方法は、PowerShellスクリプトファイルのショートカットを作成し、ショートカットにファイルをドラッグ&ドロップして処理させる方法です。
手順は、次のとおりです。
まず、右クリックメニューなどからPowerShellスクリプトファイルのショートカットを作成します。
次に、作成したショートカットのプロパティ画面を開き、リンク先欄に表示されている文字列(ファイルパス)の前に、以下の文字列を追記し「OK」をクリックします。
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy RemoteSigned -File <元の文字列>
以上で、ショートカットにドラッグ&ドロップしたファイルが、PowerShellスクリプトの引数として処理できるようになります。
以下の画像は、テスト用のPowerShellスクリプトファイル(sample.ps1)のショートカット作成して、ファイルをドラッグ&ドロップした様子です。
ドラッグ&ドロップしたファイルのパスが1ファイルずつ表示されていることを確認できます。
バッチファイルを経由する方法
2つ目の方法は、PowerShellスクリプトファイルを実行するためのバッチファイルを作成し、バッチファイルにファイルをドラッグ&ドロップして処理させる方法です。
バッチファイルの記述内容は、次のとおりです。
@echo off
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy RemoteSigned -File E:\sample.ps1 %*
「E:\sample.ps1」の部分には、実行したいPowerShellスクリプトファイルを記述します。
上のバッチファイルでは、ドラッグ&ドロップしたファイルをPowerShellスクリプトの引数に「%*」で指定しています。
以上で、バッチファイルにドラッグ&ドロップしたファイルが、PowerShellスクリプトの引数として処理できるようになります。
あとがき
不特定のファイルに対して処理を行いたいとき、ドラッグ&ドロップで実行できるようにしておけば、スクリプト内でファイルを指定する必要がないので便利です。お試しあれ。