見出し画像

ファイル名の一括変更が面倒なのでpowershellでスクリプト作ってみた(ChatGPTが)

ファイル名のリネーム作業面倒ですよね。まとめて選択して「名前の変更」(F2キー)押せばいいだけなんですが、もはや右クリックが面倒とか、普段使わないショートカットキーを押すのが面倒とかそのレベルで億劫なのです。

そこで、powershellでデスクトップ上のアイコンにファイルをドラッグしたら入力ダイアログが表示されて、入力した名前に変更するスクリプトを作りました。

ぶっちゃけ、普通に名称変更するのと大して手間は変わらないですが、フォルダ上で名前を変更しようとして誤爆する緊張感から解放されるだけマシかな~というぐらい

またまた、ChatGPTくんが全部やってくれたので、何が書いてるか一切わかりませんw

【powershellのスクリプト】

Add-Type -AssemblyName Microsoft.VisualBasic
Add-Type -AssemblyName System.Windows.Forms

try {
    $newNameBase = [Microsoft.VisualBasic.Interaction]::InputBox("新しいファイル名のベースを入力してください(番号は自動で追加されます):", "ファイル名変更")

    if ([string]::IsNullOrWhiteSpace($newNameBase)) {
        [System.Windows.Forms.MessageBox]::Show("ファイル名が入力されていません。処理を中止します。")
        exit
    }

    $counter = 1
    foreach ($filePath in $args) {
        if (Test-Path $filePath) {
            $directory = [System.IO.Path]::GetDirectoryName($filePath)
            $extension = [System.IO.Path]::GetExtension($filePath)
            $newName = "{0}\{1}{2}{3}" -f $directory, $newNameBase, $counter, $extension

            Rename-Item -Path $filePath -NewName $newName -ErrorAction Stop
            $counter++
        }
        else {
            throw "ファイルが存在しません: $filePath"
        }
    }

    [System.Windows.Forms.MessageBox]::Show("ファイル名の変更が完了しました。")
}
catch {
    $errorMessage = $_.Exception.Message
    [System.Windows.Forms.MessageBox]::Show("エラーが発生しました: $errorMessage", "エラー", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Error)
}

【バッチファイルのスクリプト】

@echo off
chcp 65001
setlocal enabledelayedexpansion

set "scriptPath=%~dp0ファイル名の変更.ps1"

REM PowerShellスクリプトを実行
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%scriptPath%" %*

endlocal

前回と同様に、デスクトップにバッチファイルのショートカットを作成しておき、そこにリネームしたいファイルをドラッグしたら画像のようなダイアログ出てくるので変更したいファイル名を入れたらOKです。
ちなみに、今回はpowershellのスクリプトとバッチファイルは同じフォルダの中に入れておく必要があります。


連番も勝手に振ります。なお、変更するファイル以外の名前を確認してバッティングしないように名前を振るような配慮はないので、変更後の名前が被った場合は普通にエラーが出て名前変更失敗します。

これを完成させてすぐにもっといい方法を思いついたので、こいつは実戦投入されることなくお蔵入りです。

ということで、次回は

ファイル名の変更が面倒なのでpowershellで『フォルダにファイルが追加された瞬間勝手に名前が変わるスクリプト』作ってみた(ChatGPTが)

です。お楽しみに。

この記事が気に入ったらサポートをしてみませんか?