@echo off
setlocal enabledelayedexpansion

:---------------------------------------------------
:---ユーザー初期値（利用者にて値を変更して保存可能）
:---------------------------------------------------

:--- 撮影年月日（ここに入れた文字を撮影年月日とする / 値を"実行時に入力"にすると実行時入力式）
set DATETIME=実行時に入力
:--- 撮影年月日の後文字（ここに入れた文字を撮影年月日の後に入れる / 初期値はアンダーバーにしている）
set DTSUFFIX=_
:--- 連番初期値（ここに入れた数字を起点に連番を振る / 値を"実行時に入力"にすると実行時入力式）
set NUMSTART=実行時に入力
:--- 連番桁数（値1にすると1,2,3 値2にすると01,02,03 値3にすると001,002,003と連番を振る / 値3を推奨）
set NUMDIGIT=3
:--- 変換前拡張子（ここに入れた拡張子を対象に名前変換する / 値を"実行時に入力"にすると実行時入力式）
set EXTENMAE=実行時に入力
:--- 変換後拡張子（ここに入れた拡張子に名前変換 / 値を"変換前と同じ"にすると変換前と同じ拡張子に変換）
set EXTENATO=変換前と同じ

:---------------------------------------------------
:---ここから処理コマンド
:---------------------------------------------------

:---ウィンドウでユーザー入力値を受け取る
if %DATETIME% == 実行時に入力 ( set /p DATETIME=撮影年月日を入力してください：)
if %NUMSTART% == 実行時に入力 ( set /p NUMSTART=連番初期値を入力してください：)
if %EXTENMAE% == 実行時に入力 ( set /p EXTENMAE=対象拡張子を入力してください：)

:---ユーザー入力値をもとに各種変数に値をセット
set DATETIME=%DATETIME%%DTSUFFIX%
set /a i=%NUMSTART% 

:---ユーザー初期値をもとに各種変数に値をセット
set /a NUMDIGIT=%NUMDIGIT% 
if %EXTENATO% == 変換前と同じ ( set EXTENATO=%EXTENMAE%)

:---連番桁数の前ゼロを変数にセット
if %NUMDIGIT% geq 3 ( set KETA3=0)
if %NUMDIGIT% geq 2 ( set KETA2=0)

:---ファイル名を仮の値に変更（リネームループ防止用）
for %%F in (*.%EXTENMAE%) do (
 if not %%~xF == .bat (
  rename "%%F" "%%~nF■%%~xF"
 )
)

:---ファイル名変更（IF文で桁数を把握して前ゼロ補完）
for %%F in (*■.%EXTENMAE%) do (
 if %%~xF == .bat (
  set /a i=i-1
 ) else if !i! LSS 10 (
  rename "%%F" "%DATETIME%%KETA3%%KETA2%!i!.%EXTENATO%"
 ) else if !i! LSS 100 (
  rename "%%F" "%DATETIME%%KETA3%!i!.%EXTENATO%"
 ) else (
  rename "%%F" "%DATETIME%!i!.%EXTENATO%"
 )
 set /a i=i+1
)