【便利バッチ】ファイル名を一括で変更するWindowsコマンド
できること
指定したフォルダにあるファイルの名前を、以下のいずれかのルールで一括で変更することができます。
・ファイル名の頭に任意の文字列をつける
・ファイル名のお尻に任意の文字列をつける
利用方法
①以下のコマンドをコピーし、テキストファイルに貼り付け、bat形式で保存します。
②batファイルを実行し、コマンドプロンプト上の指示に従い必要な情報を入力します。
コマンド
@echo off
REM -----------------------------------------------------------------------------------------
REM ファイル名変更バッチ
REM -----------------------------------------------------------------------------------------
SET BATCHNAME=%‾n0
SET YMD=%date:‾-10,4%%date:‾-5,2%%date:‾-2,2%
REM * ========================================================================================
REM * 処理開始
REM * ========================================================================================
:LA_STARTBATCH
cls
ECHO =========================================================================================
ECHO ファイル名変換バッチ
ECHO.
ECHO -----------------------------------------------------------------------------------------
ECHO 指定したDIRECTORYに存在するファイルの名前を、指定したルールで一括変換しやす。
ECHO.
ECHO =========================================================================================
ECHO.
SET /p idir=処理するディレクトリのパスを入力(または [c] キャンセル)⇒
IF '%idir%'=='c' GOTO LA_ENDBATCH
SET DIRPATH=%idir%
IF '%idir%'=='' (
SET DIRPATH=%CD%
)
ECHO.
SET /p namerule=ファイル名称の変更ルールを指定([1]頭に文字列を追加 [2]お尻に文字列を追加 [c] キャンセル)⇒
IF '%namerule%'=='c' GOTO LA_ENDBATCH
IF '%namerule%'=='' GOTO LA_STARTBATCH
SET NRULE=%namerule%
ECHO.
SET /p ifile=新しいファイル名を入力(または [c] キャンセル)⇒
IF '%ifile%'=='c' GOTO LA_ENDBATCH
IF '%ifile%'=='' GOTO LA_STARTBATCH
SET FNAME=%ifile%
REM 作業フォルダに移動
IF NOT EXIST %DIRPATH% (
ECHO 指定されたディレクトリは存在しません。
GOTO LA_STARTBATCH
)
:LA_STARTBATCH
CD %DIRPATH%
ECHO [%DATE% %TIME%] バッチ処理開始
ECHO %DIRPATH%
IF %NRULE%==1 ECHO 上記ディレクトリ内にあるファイルの頭に %FNAME% をくっつけます。
IF %NRULE%==2 ECHO 上記ディレクトリ内にあるファイルのお尻に %FNAME% をくっつけます。
ECHO.
SET /p confirm=よろしいですか?[ y / n ]⇒
CALL :LA_INPUT_CHECK %confirm% yn
IF '%confirm%'=='n' GOTO LA_CANCELL
ECHO.
ECHO 処理開始
setlocal enabledelayedexpansion
FOR /R %%A IN (*) DO (
SET NM=%%‾nA
IF NOT '%%‾nA'=='%BATCHNAME%' (
IF %NRULE%==1 REN "%%‾fA" "!FNAME!%%‾nA%%‾xA"
IF %NRULE%==2 REN "%%‾fA" "%%‾nA!FNAME!%%‾xA"
)
)
echo.
GOTO LA_ENDBATCH
EXIT /B
REM * =====================================================================================
REM * コマンドチェック
REM * =====================================================================================
:LA_INPUT_CHECK
ECHO %2 > tmp.text
SET RET=
FOR /F "usebackq" %%t IN (`findstr %1 tmp.text`) DO SET RET=%%t
DEL tmp.text
if '%RET%'=='' (
GOTO LA_INPUT_MISSING
)
EXIT /b
REM * =====================================================================================
REM * エラー処理
REM * =====================================================================================
:LA_ERROR
echo.
echo エラーが発生しました。
echo.
goto LA_ENDBATCH
REM * =====================================================================================
REM * 処理中止
REM * =====================================================================================
:LA_CANCELL
ECHO.
ECHO 処理は中止されました。
ECHO.
GOTO LA_ENDBATCH
REM * =====================================================================================
REM * 入力ミス
REM * =====================================================================================
:LA_INPUT_MISSING
ECHO.
SET /p miss=入力に誤りがあります。
GOTO LA_STARTBATCH
REM * =====================================================================================
REM * バッチ終了処理
REM * =====================================================================================
:LA_ENDBATCH
ECHO [%DATE% %TIME%] 処理終了
ECHO.
SET /p end=終了するにはEnterキーを押してください...
EXIT