コマンドプロンプトバッチは手間がかかる割にできることが少ないです。
今のWindowsならPowershellが使えますので、そちらを使うことをお勧めします。
powershellでリネームしたいファイルのあるディレクトリパスに移動して
powershell
1Get-ChildItem -Name | rename-item -NewName { $_ -replace '([^_]+)(?:_bk)+','$1' }
これを実行していただければリネームできるはずです。
追記
そのエラーはリネーム前と後が同じ名前を指定すると出るエラーです。
置換処理を入れても名前が変わらないファイルがあったってことですね。
そしてディレクトリを再帰的に処理するコマンドはこれです。
-Recurseの前にディレクトリ名を入れていただければそこから、
無指定ならpowershellの現在のディレクトリから、
再帰的に配下のサブディレクトリ内のファイルのみをリネームします。
再追記
ikadzuchiさんご指摘ありがとうございます。
正規表現に問題がありますね。
とりあえず例で挙げられてるのだけ処理できるように書いたので。
具体的には一番右のピリオドより右のアンダースコアより右の文字を切り捨てる。
という正規表現に修正しました。
これならば
test.test_bk_test.txt_bk2_bk_bn → test.test_bk_test.txt
こういう置換ができます。
powershell
1Get-ChildItem renamefile -Recurse * | ? { ! $_.PSIsContainer } | rename-item -NewName { $_.name -replace '(.+.[^_]+)_.+','$1' }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/20 08:26 編集
2020/08/20 16:25