PowerShell スクリプトに直接ドラッグアンドドロップすることは難しいため、コマンドラインや右クリックメニューを使用する方法があります。ただし、以下の手順を実行すれば、ドラッグアンドドロップの代替方法として PowerShell スクリプトを利用することができます。

1. バッチファイルを使用して PowerShell スクリプトを実行

バッチファイルを作成して、ドラッグアンドドロップされたファイルパスを PowerShell に渡すことができます。以下の手順で進めてください。

手順:

1. バッチファイル(.bat)を作成:

新しいテキストファイルを作成して、ファイル名を run_convert.bat に変更します。



2. バッチファイルに以下のコードを貼り付けます:



@echo off
set "filePath=%~1"
powershell.exe -ExecutionPolicy Bypass -File "convert_filename.ps1" "%filePath%"
pause

3. PowerShell スクリプト(convert_filename.ps1)を作成:

convert_filename.ps1 ファイルを同じディレクトリに作成して、以下のコードを貼り付けます。




param (
    [string]$filePath
)

# ファイル名とディレクトリの分離
$fileDir = Split-Path $filePath
$fileName = Split-Path $filePath -Leaf

# 空白をアンダースコアに変換
$newFileName = $fileName -replace ' ', '_'

# 全角英数字を半角に変換
$newFileName = $newFileName.Normalize([Text.NormalizationForm]::FormKC)

# ファイルの新しいパスを作成
$newFilePath = Join-Path $fileDir $newFileName

# ファイル名を変更
Rename-Item -Path $filePath -NewName $newFileName

Write-Host "ファイル名を変換しました: $newFileName"

2. 使い方

1. ドラッグアンドドロップされたファイルを run_convert.bat にドロップすると、バッチファイルが PowerShell スクリプトを呼び出してファイル名を処理します。



解説

set "filePath=%~1" はドラッグアンドドロップされたファイルのパスを取得し、PowerShell スクリプトに渡します。

powershell.exe -ExecutionPolicy Bypass -File "convert_filename.ps1" は PowerShell スクリプトを呼び出し、そのパスを処理します。

pause コマンドはスクリプトが完了した後、結果を表示するためにコンソールを一時停止します。


この方法で、バッチファイルにドラッグアンドドロップすることで PowerShell スクリプトが実行され、ファイル名の変換が行われます。