Skip to content

Instantly share code, notes, and snippets.

@TeraokaAkihiro
Created November 7, 2018 14:29
Show Gist options
  • Save TeraokaAkihiro/65185b818bce1ad376b866e9f1d0ceaa to your computer and use it in GitHub Desktop.
Save TeraokaAkihiro/65185b818bce1ad376b866e9f1d0ceaa to your computer and use it in GitHub Desktop.
hk03ne/renban_rename.batの桁数指定バージョン
@echo off
setlocal enabledelayedexpansion
:: hk03neさんの桁数指定バージョン : 複数ファイルを一括で連番付きファイル名にリネームするバッチファイル
:: https://gist.github.com/hk03ne/3edd7b5c6a276c2bf6268a9248c8b484
:: 連番(整数)
set /a INT_INDEX=1
:: 連番を0で桁揃えする長さ
set /p PAD_LENGTH="0で桁揃えする長さ : "
:: リネームしたファイル数
set /a FILE_NUM=0
:: ループ処理開始
:loop_start
:: 引数がなくなったら終了
if "%~1"=="" goto loop_exit
:: ファイルが存在しないときはスキップする
if not exist "%~1" (
echo ファイル "%~1" は存在しません。スキップします。
shift
goto loop_start
)
pushd "%~dp1"
:: 0で桁揃えした連番をつくる
set INDEX=00000000000000%INT_INDEX%
set INDEX=!INDEX:~-%PAD_LENGTH%!
:: リネーム処理
set FILENAME=%~nx1
set NEW_FILENAME=%INDEX%%FILENAME%
ren "%FILENAME%" "%NEW_FILENAME%"
:: エラー処理
if not %ERRORLEVEL%==0 (
if exist %NEW_FILENAME% (
:: ファイル名の重複でリネームが失敗したときは次の連番でリネームを試みる
set /a INT_INDEX+=1
goto loop_start
) else (
:: その他のエラー時
echo 不明なエラー : %FILENAME%。スキップします。
shift
goto loop_start
)
)
:: ログ出力
echo "%FILENAME%"→"%NEW_FILENAME%"
popd
shift
set /a INT_INDEX+=1
set /a FILE_NUM+=1
goto loop_start
:: ループ処理終了
:loop_exit
echo %FILE_NUM%個のファイルをリネームしました。
pause
endlocal
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment