shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【PowerShell】選択したファイル名の一部を変更するスクリプトの事例

PowerShellで、選択した複数のファイル名の一部を一括で置換するスクリプトの事例です。次のVBAでのアウトプット事例と同様の処理をPowerShellでします。

shikumika.org

内容:

なお、動作確認はWindows PowerShell 5.1です。

スクリプトの内容

次のとおりです。

# 置換前・置換後の文字列を入力
$oldText = Read-Host "置換前の文字列を入力してください"
$newText = Read-Host "置換後の文字列を入力してください"

# ファイル選択ダイアログ(複数選択)
Add-Type -AssemblyName System.Windows.Forms
$dialog = New-Object System.Windows.Forms.OpenFileDialog
$dialog.Multiselect = $true
$dialog.Title = "ファイルを選択してください"
$dialog.Filter = "すべてのファイル (*.*)|*.*"

if ($dialog.ShowDialog() -eq "OK") {
    foreach ($file in $dialog.FileNames) {
        $folder = Split-Path $file
        $filename = Split-Path $file -Leaf
        $newFilename = $filename -replace [regex]::Escape($oldText), $newText

        if ($newFilename -ne $filename) {
            $newPath = Join-Path $folder $newFilename
            Rename-Item -Path $file -NewName $newFilename
            Write-Host "変更: $filename → $newFilename"
        }
    }
    Write-Host "ファイル名の変更が完了しました。"
} else {
    Write-Host "処理をキャンセルしました。"
}

Read-Host "続行するには何かキーを押してください..."
 
実行時のイメージ(BATファイルで PowerShell スクリプトを実行の場合)

BATファイルで上記スクリプトのファイルを実行させたときの画面イメージは次のとおりです。

CLIの画面イメージ

BATファイルで PowerShell スクリプトを実行の場合

以上、PowerShellで選択したファイル名の一部を変更するスクリプトの事例でした。