Last active
November 7, 2018 14:21
-
-
Save napthink/3edd7b5c6a276c2bf6268a9248c8b484 to your computer and use it in GitHub Desktop.
複数ファイルを一括で連番付きファイル名にリネームするバッチファイル
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off | |
setlocal enabledelayedexpansion | |
:: 連番(整数) | |
set /a INT_INDEX=1 | |
:: 連番を0で桁揃えする長さ | |
set PAD_LENGTH=3 | |
:: リネームしたファイル数 | |
set /a FILE_NUM=0 | |
set /p PREFIX="ファイル名の先頭につける文字列を入力してください : " | |
:: ループ処理開始 | |
: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 EXTENSION=%~x1 | |
set NEW_FILENAME="%PREFIX%_%INDEX%%EXTENSION%" | |
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
http://hk0.hatenablog.com/entry/2016/08/13/000537