PowerShellスクリプトにファイルをドラッグ&ドロップして処理させる方法

PowerShellスクリプトにファイルをドラッグ&ドロップして処理させる方法

PowerShellのスクリプトファイルを利用していると、バッチファイルのようにスクリプトファイルにファイルをドラッグ&ドロップして処理を実行したいときがあります。

ですが、PowerShellスクリプトファイル自体には、ファイルをドラッグ&ドロップすることができません。

そんなときは、ショートカットファイルやバッチファイルを経由することで、ドラッグ&ドロップしたファイルをPowerShellスクリプトの引数として処理させることができます。

この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
Windows 10 Pro 64bit1909
Windows PowerShell5.1.18362.628

自分の環境のWindows PowerShellのバージョンは「Get-Host」コマンドレットで確認できます。

PowerShellスクリプトにファイルをドラッグ&ドロップして処理させる方法

事前準備

ドラッグ&ドロップしたファイルを引数として受け取れているかを確認するために、次のようなテスト用PowerShellスクリプトファイル「sample.ps1」を用意しておきます。

ちなみに、スクリプトファイルの引数は$argsに格納されます。

foreach ($arg in $args) {
  echo $arg
  Read-Host "続けるには Enter キーを押してください。"
}

ショートカットを経由する方法

ドラッグ&ドロップしたファイルをPowerShellスクリプトの引数として処理させる一つ目の方法は、PowerShellスクリプトファイルのショートカットを作成し、ショートカットにファイルをドラッグ&ドロップして処理させる方法です。

手順は、次のとおりです。

まず、右クリックメニューなどからPowerShellスクリプトファイルのショートカットを作成します。

PowerShellスクリプトにファイルをドラッグ&ドロップして処理させる方法

次に、作成したショートカットのプロパティ画面が開き、リンク先欄に表示されている文字列(ファイルパス)の前に、以下の文字列を追記し「OK」をクリックします。

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy RemoteSigned -File <元の文字列>

PowerShellスクリプトにファイルをドラッグ&ドロップして処理させる方法

以上で、ショートカットにドラッグ&ドロップしたファイルが、PowerShellスクリプトの引数として処理できるようになります。

以下の画像は、テスト用のPowerShellスクリプトファイル(sample.ps1)のショートカット作成して、ファイルをドラッグ&ドロップした様子です。

ドラッグ&ドロップしたファイルのパスが1ファイルずつ表示されていることを確認できます。

PowerShellスクリプトにファイルをドラッグ&ドロップして処理させる方法

バッチファイルを経由する方法

2つ目の方法は、PowerShellスクリプトファイルを実行するためのバッチファイルを作成し、バッチファイルにファイルをドラッグ&ドロップして処理させる方法です。

バッチファイルの記述内容は、次のとおりです。

@echo off
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy RemoteSigned -File E:\sample.ps1 %*

「E:\sample.ps1」の部分には、実行したいPowerShellスクリプトファイルを記述します。

上のバッチファイルでは、ドラッグ&ドロップしたファイルをPowerShellスクリプトの引数に「%*」で指定しています。

以上で、バッチファイルにドラッグ&ドロップしたファイルが、PowerShellスクリプトの引数として処理できるようになります。

PowerShellスクリプトにファイルをドラッグ&ドロップして処理させる方法

あとがき

不特定のファイルに対して処理を行いたいとき、ドラッグ&ドロップで実行できるようにしておけば、スクリプト内でファイルを指定する必要がないので便利です。

お試しあれ。