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__がどんどん高機能になっていくぞ…どこまでやりましょうね、これ。
でも次は違うことしよっかな。
ではでは!