コマンドプロンプト
バッチ
バッチファイル

バッチファイルでファイル名の末尾を削除する(拡張子は削除しない)

More than 1 year has passed since last update.

やりたいこと

  • ファイル名の末尾にある固定文字列を削除したい。
  • バッチで。
  • ディレクトリ内を一括で置換したい。

ディレクトリには以下のファイルがある想定
hugahuga-debug.txt
hogehoge-debug.txt

今回はファイル名の末尾にある文字列の"-debug"を削除し、"hugahuga.txt"のようなファイル名にします。

rename.bat
for %%F in (*-debug.txt) do call :sub "%%F"
goto :EOF

:sub
set BEFORE=%~1
set FILENAME=%~n1
set EXTENSION=%~x1
set AFTER=%FILENAME:~0,-6%%EXTENSION%
ren "%BEFORE%" "%AFTER%"

結果

hugahuga.txt
hogehoge.txt

やってること

  • バッチと同じディレクトリ内のファイルで"*-debug.txt"に引っかかるファイルを順に対象にする。
  • BEFOREに変更前のファイル名が代入される。
  • FILENAMEに変更前のファイル名から拡張子を除き、代入される。
  • EXTENSIONに拡張子が代入される。
  • AFTERにFILENAMEの末尾6文字(ここでは"-debug"が該当)を削除し、EXTENSIONをくっつける。
  • renコマンドでリネームする。

こちらを参考にさせていただきました
http://wpqtqpqp.hatenablog.com/entry/2016/01/24/115618