0
2

More than 3 years have passed since last update.

バッチファイルで複数ファイルの拡張子(.zi_等)をリネームする(PPAP)

Last updated at Posted at 2021-04-09

Y子です。
昨日思いついてしまったので、一昨日のアレ をアレしてみます。
つまり…PPAPリネームバッチの、複数ファイル対応版です!

概要・用途

以下の通り、拡張子をリネームするバッチファイルです。
 「.zi_」「.zi」 → 「.zip
 「.ex_」「.ex」 → 「.exe
 それ以外       → なにもしない
複数ファイルに対応しています。10個以上でも大丈夫!

コード

rename_ppap_multifile.bat
@echo off

:label_top

rem 引数がない場合は最後に飛んで終了する
if "%~1"=="" (
  goto :label_bottom
)

rem 変更前のファイル名(フルパス)「C:\work dir\test.xxx」
set str_oldfile=%~1

rem ファイル名分割…拡張子なし「test」と、拡張子のみ「.xxx」
set str_old_fn=%~n1
set str_old_ex=%~x1

rem 与えられたファイルの拡張子が「.zi_」「.zi」「.ex_」「.ex」なら
if "%str_old_ex%"==".zi_" (
  call :renamefile "%str_oldfile%" "%str_old_fn%.zip"
) else if "%str_old_ex%"==".zi" (
  call :renamefile "%str_oldfile%" "%str_old_fn%.zip"
) else if "%str_old_ex%"==".ex_" (
  call :renamefile "%str_oldfile%" "%str_old_fn%.exe"
) else if "%str_old_ex%"==".ex" (
  call :renamefile "%str_oldfile%" "%str_old_fn%.exe"

rem 想定外のファイルなら
) else (
  echo なにもしませんでした(%str_oldfile%)

rem 引数をシフトし、最初に戻る
shift
goto :label_top

rem ====サブルーチン====
rem ファイル名変更サブルーチン
:renamefile
  set str_old=%~1
  set str_new=%~2

  ren "%str_old%" "%str_new%"
  echo ファイル名を「%str_new%」に変更しました
exit /b

:label_bottom
echo 処理を終了しました
pause

このバッチファイルに、.txt .zi_ .zi .ex_ .exが混じった大量のファイルをドロップします!
エイヤッ!

なにもしませんでした(C:\work dir\test01.txt)
なにもしませんでした(C:\work dir\test02.txt)
ファイル名を「test03.zip」に変更しました
なにもしませんでした(C:\work dir\test04.txt)
ファイル名を「test05.zip」に変更しました
なにもしませんでした(C:\work dir\test06.txt)
ファイル名を「test07.exe」に変更しました
なにもしませんでした(C:\work dir\test08.txt)
ファイル名を「test09.exe」に変更しました
なにもしませんでした(C:\work dir\test10.txt)
なにもしませんでした(C:\work dir\test11.txt)
なにもしませんでした(C:\work dir\test12.txt)
処理を終了しました
続行するには何かキーを押してください . . .

おおおお!これです!これがやりたかったんです!
リネームが必要なファイルはリネームし、処理不要なファイルはそのままです。

おわりに

PPAPがどんどん高機能になっていくぞ…どこまでやりましょうね、これ。
でも次は違うことしよっかな。

ではでは!

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2