ファイル名の一部を置き換えるようなリネームの方法
今回もYahoo!知恵袋からの質問
コマンドプロンプトを使ったファイルの置換について kmshtkmさん
コマンドプロンプトのrenameで
aaa_bbb.mp3
ccc_ddd.mp3
といったファイル名をaaa(bbb).mp3
ccc(ddd).mp3
というファイル名に置換したいのですが、どのようにすればいいでしょうか?rename *_*.mp3 *(*).mp3
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1121701811
としたのですが、ダメでした
質問は、"_"(アンダーバー)で区切られた前半_後半.mp3 というファイル名の前後を前半(後半).mp3 にリネームしたいという要望と理解しました。例では前半も後半も3文字分ですが長さは不定だとします。
for分の"delims=_"で区切って……と考えましたが、面倒なのでものぐさな方法で作ってみました。
制限事項としてアンダーバーはファイル名に1つあり、前半と後半に区切る場所にある(先頭や末尾にはない)とします。
作ったバッチファイルがこれ。
echo off for %%a in (*_*.mp3) do call :sub "%%a" exit /b :sub set fname=%~1 set fname=%fname:_=(% set fname=%fname:.=).% ren %1 "%fname%" goto :EOF
単純にファイル名を環境変数に取得して、"_"を"("に、"."を")."に置換して、renameコマンドに渡しているだけです。