PowerShellスクリプトにフォルダ選択ダイアログを追加することで、ユーザーがフォルダを選択できるようにすることが可能です。`System.Windows.Forms.FolderBrowserDialog` クラスを使用してフォルダ選択ダイアログを表示する方法を以下に示します。
### PowerShellスクリプト(フォルダ選択機能付き)
```powershell
Add-Type -AssemblyName System.Windows.Forms
# フォルダ選択ダイアログを表示してフォルダを選択
function Select-FolderDialog {
$folderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
$folderBrowser.Description = "処理したいフォルダを選択してください。"
if ($folderBrowser.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {
return $folderBrowser.SelectedPath
} else {
return $null
}
}
# 全角から半角への変換関数
function Convert-FullWidthToHalfWidth {
param (
[string]$input
)
$sb = New-Object -TypeName System.Text.StringBuilder
foreach ($char in $input.ToCharArray()) {
$code = [int][char]$char
# 全角英数字記号の範囲
if ($code -ge 65281 -and $code -le 65374) {
$sb.Append([char]($code - 65248))
}
elseif ($code -eq 12288) {
$sb.Append(" ")
}
else {
$sb.Append($char)
}
}
# スペースを削除
return $sb.ToString() -replace ' ', ''
}
# フォルダ選択
$folderPath = Select-FolderDialog
if (-not $folderPath) {
Write-Host "フォルダが選択されませんでした。スクリプトを終了します。"
exit
}
if (-not (Test-Path $folderPath)) {
Write-Host "選択されたフォルダが存在しません。"
exit
}
# フォルダ内のファイルを取得してリネーム
Get-ChildItem -Path $folderPath | ForEach-Object {
$originalFileName = $_.Name
$newFileName = Convert-FullWidthToHalfWidth -input $originalFileName
if ($newFileName -ne $originalFileName) {
$originalFilePath = $_.FullName
$newFilePath = Join-Path $folderPath $newFileName
try {
Rename-Item -Path $originalFilePath -NewName $newFileName
Write-Host "リネームしました: $originalFileName -> $newFileName"
} catch {
Write-Host "エラーが発生しました: $originalFileName - $($_.Exception.Message)"
}
}
}
Write-Host "処理が完了しました。"
```
### 使い方:
1. このスクリプトを `.ps1` ファイルとして保存します(例: `RenameFiles.ps1`)。
2. PowerShellを管理者として実行し、スクリプトを実行します。
### 実行手順:
1. 管理者としてPowerShellを開きます。
2. 以下のコマンドを実行してスクリプトを実行できるように設定します(初回のみ必要です)。
```powershell
Set-ExecutionPolicy RemoteSigned
```
3. スクリプトを実行します。
```powershell
.\RenameFiles.ps1
```
### 説明:
- **`Select-FolderDialog`** 関数を使って、フォルダ選択ダイアログを表示し、ユーザーがフォルダを選択できるようにします。
- 選択されたフォルダ内のファイルに対して、全角から半角への変換およびスペースの削除を行い、一括リネームします。
- **`Add-Type -AssemblyName System.Windows.Forms`** で、フォルダ選択ダイアログを使用できるようにしています。
これにより、ユーザーが指定したフォルダのファイルを全角から半角に変換し、スペースを削除する一括リネームが可能になります。