バッチファイルと同じ場所のPythonスクリプトファイルを呼び出す
Pythonスクリプトファイルの関連付けがPython以外でファイルをドロップできない場合など、バッチファイルからスクリプトを呼び出したいことがあります。このときはバッチファイルのスクリプトファイル名の前に%~dp0
を付けます。
test.bat(test.pyを呼び出す)
python.exe %~dp0test.py %*
%~dp0
はバッチファイルの親ディレクトリのパス+「\」を指すバッチパラメーターです。省略した場合、ドラッグ&ドロップによりカレントディレクトリの場所が変わり、ファイルが見つからない、間違ったファイルを呼び出すといった想定外の動作につながります。
蛇足:ストアアプリ版PowerShell 7による関連付け消失時
PowerShell 7をインストーラー版からストアアプリ版に切り替えた場合、ps1ファイルの関連付けが消えることがあります。この場合はインストーラー版PowerShell 7に戻すことで関連付けとドラッグ&ドロップが復活します。ストアアプリ版の場所を探して手動で関連付ける方法でも可能かもしれません。