この記事では、特定の種類のファイルの名前を一括変更するバッチファイル(ファイル名の末尾は連番になります)を紹介します。
このバッチファイルを使用すると、指定の拡張子を有するファイルのみ、名前が一括変更されます。
このバッチファイルは、この記事内のコードをメモ帳に貼り付けるだけで使えます。
ファイル名変更バッチファイルの作成方法
このバッチファイルの作り方はシンプルです。
別の記事で紹介した「バッチファイルの作成方法」の手順3で、以下のコードをメモ帳に貼り付けるだけです。
@echo off
:: V02L05
setlocal enabledelayedexpansion
:input_ext
set /p "sourceExt=名前を変更したいファイルの拡張子名を入力してください "
set "testExt=!sourceExt!"
if "!testExt!"=="" (
echo 拡張子名を入力してください。
echo.
goto input_ext
)
set /p "fileName=新しいファイル名を入力してください(拡張子を除く) "
set "testName=!fileName!"
if "!testName!"=="" set "fileName="
:: 作業フォルダの設定
set "folder=%~dp0"
:: 変更したファイル数をカウントする変数を初期化
set "changedFiles=0"
:: 拡張子とファイル名のチェック
set "error=0"
call :checkForbiddenAll "!sourceExt!" "!fileName!"
if !errorlevel! equ 1 (
echo.
echo 拡張子またはファイル名に禁止文字が含まれているため処理を終了します。
echo 再度バッチファイルを実行してください。
echo.
pause
exit /b
)
:: 対象ファイルの数を事前にカウント
for %%F in ("!folder!\*.!sourceExt!") do set /a changedFiles+=1
:: 対象ファイルが存在しない場合は終了
if !changedFiles! equ 0 (
echo.
echo 指定された拡張子のファイルが見つかりません。
echo.
pause
exit /b
)
:: 最初に、競合を避けるためすべてのファイルを一時的な名前にリネーム
set /a tempCount=1
for %%F in ("!folder!\*.!sourceExt!") do (
ren "%%F" "temp_!tempCount!.tmp"
set /a tempCount+=1
)
:: 次に、一時的なファイルから最終的な名前にリネーム
set /a finalCount=1
for %%F in ("!folder!\temp_*.tmp") do (
if "!fileName!"=="" (
set "newName=!finalCount!.!sourceExt!"
) else (
set "newName=!fileName!!finalCount!.!sourceExt!"
)
ren "%%F" "!newName!"
set /a finalCount+=1
)
:: 処理完了メッセージの表示
echo.
echo 処理が終了しました!
echo 名前を変更したファイルの数: !changedFiles!
echo.
pause
exit /b
:checkForbiddenAll
set "str=%~1%~2"
set "chars=/:*?^""
:: |, <, > のチェック
for %%C in ("|" "<" ">") do (
set "str2=%str%"
if "!str2!" neq "!str2:%%~C=!" (
echo 禁止文字「^%%~C」が見つかりました。
exit /b 1
)
)
:: 通常の禁止文字チェック
for /L %%i in (0,1,5) do (
set "char=!chars:~%%i,1!"
if not "!char!"=="" (
echo !str! | findstr /C:"!char!" >nul && (
echo 禁止文字「!char!」が見つかりました。
exit /b 1
)
)
)
:: \のチェック
echo %str% | find "\" >nul && (
echo 禁止文字「\」が見つかりました。
exit /b 1
)
exit /b 0
バッチファイルの名前は何でもかまいません。
ファイル名変更バッチファイルの使い方
このファイル名変更バッチファイルは、以下の手順で使えます。
このバッチファイルを実行するとファイル名が一気に変更されます。念のため、事前にバックアップをとってください。
ファイル名を変更したいファイルがあるフォルダの中にバッチファイルを配置します
以下の例では、「テスト」フォルダの中にバッチファイルを置きました。

フォルダ内のファイルの拡張子(ファイル名の.よりも後半の部分)が表示されていない場合は、以下の手順で拡張子を表示させてください。
1.「Win」キーを押しながら「E」キーを押します

2.「表示」→「表示」→「ファイル拡張子」を選択します

この操作によって拡張子が表示されるようになります。
バッチファイルをダブルクリックします
最初に、目的のフォルダ内にバッチファイルを配置したことを確認してください。
意図しないフォルダ内でバッチファイルを実行すると、意図しないファイルの名前が変更されるので注意してください。

上のイラストのように、「テスト」フォルダの中には、テキストファイルが3つ、pngファイルが1つ、jpegファイルが1つ存在しています。
今回の例では、これらのファイルのうち、テキストファイル(拡張子が「txt」のもの)の名前を変更してみます。
上のイラストの状態で、バッチファイルをダブルクリックして実行します。
バッチファイルをダブルクリックすると、以下のメッセージがでます。

今回は、テキストファイルの名前を変更したいので、半角で「txt」と入力します。

上のイラストのように入力できたら、エンターキーを押します。
エンターキーを押すと、以下のイラストのように、新しいファイル名を尋ねられます。

上のイラストの状態で、新しいファイル名を入力します。

今回の例では、上のイラストのように、新しいファイル名を「テキスト」としました。
この状態でエンターキーを押すと処理が始まり、以下のメッセージがでます。

このメッセージで、名前が変更されたファイルの数を確認できます。
実際のフォルダでは、以下のイラストのように、テキストファイルのみ、「テキスト」に名前が変更されます。
ファイル名の末尾は連番になります(末尾の番号は1から始まります)。

以上で基本操作の説明は終了です。
ファイル名を単純な連番にしたい場合
以下は、テキストファイル(拡張子:txt)の名前を単純な連番にした例です。

この場合、以下のイラストのように、テキストファイルのファイル名が単純な連番になります。
変更前

変更後

セキュリティソフトによって処理が遮断された場合
パソコンの環境によっては、セキュリティソフトによって処理が一時的に遮断され、以下のようなメッセージ(一例です)がでる場合があります。

このような場合は、「アプリを許可する」を選んでください。
(メッセージや、アプリの許可操作は、セキュリティソフトによって異なります)
注意点
以下の文字は、ファイル名に使用できません
\、/、:、*、?、"、<、>、|
マウス操作でファイル名を一括変更する方法
ファイル名の一括変更はマウス操作でも可能です。
その方法については、別の記事で説明しましたので、そちらをご参照ください。
その他の関連バッチファイル
以下のバッチファイルも併用すると、より柔軟なファイル名変更ができます

・ファイルの拡張子を一括で変更するバッチファイルはこちら
・ファイル名の一部を一括で変更/削除するバッチファイルはこちら
・ファイル名に作成日/更新日を一括追加するバッチファイルはこちら
・ファイルを種類ごとに自動でフォルダ分けするバッチファイルはこちら
・ファイル名の先頭/末尾の文字列を追加/削除するバッチファイルはこちら
・パソコンデータをミラーリングしてUSBメモリにバックアップするバッチファイルはこちら