この記事では、ファイル名の先頭または末尾の文字列を一括で追加または削除するバッチファイルを紹介します。
例えば、以下のような変更を一括で行うことが可能です。
このバッチファイルは、この記事内のコードをメモ帳に貼り付けるだけで誰でも簡単に使えます。
大量のファイルの名前を一気に変更できるので便利です

類似のバッチフィルとして、ファイル名の一部を一括で変更/削除するバッチファイルも紹介していますので、併せてご覧ください。
バッチファイルの作成方法
このバッチファイルの作り方はシンプルです。
別の記事で紹介した「バッチファイルの作成方法」の手順3で、以下のコードをメモ帳に貼り付けるだけです。
@echo off
setlocal enabledelayedexpansion
:: V01L01
set "folder=%~dp0"
:: 追加か削除かを選択
:operation_select
echo 実行する操作を選択してください:
echo 1: ファイル名に文字列を追加
echo 2: ファイル名から文字列を削除
set /p "operation=選択(1 または 2): "
if "!operation!" neq "1" if "!operation!" neq "2" (
echo 1または2を入力してください。
goto operation_select
)
:: 先頭か末尾かを選択
if "!operation!"=="1" (
:: 文字列追加の処理
call :add_position_select
) else (
:: 文字列削除の処理
call :delete_position_select
)
:: 文字列の長さを計算
set "len=0"
for /L %%i in (0,1,100) do (
if "!target_string:~%%i,1!" neq "" set /a "len+=1"
)
:: 入力文字列のチェック
call :checkForbiddenAll "!target_string!"
if !errorlevel! equ 1 (
echo.
echo 入力された文字列に禁止文字が含まれているため処理を終了します。
echo 再度バッチファイルを実行してください。
echo.
pause
exit /b
)
:: 変更対象ファイルの数をカウントと対象ファイルの特定
set "changedFiles=0"
set "targetFiles="
for %%F in ("!folder!*.*") do (
if /i not "%%~xF"==".bat" (
set "filename=%%~nF"
set "ext=%%~xF"
if "!operation!"=="2" (
:: 削除モードの場合、対象文字列を含むファイルのみを処理
if "!position!"=="1" (
:: 先頭一致の確認
set "check_start=!filename:~0,%len%!"
if "!check_start!"=="!target_string!" (
set "match=yes"
) else (
set "match=no"
)
) else (
:: 末尾一致の確認
set "check_end=!filename:~-%len%!"
if "!check_end!"=="!target_string!" (
set "match=yes"
) else (
set "match=no"
)
)
if "!match!"=="yes" (
set /a changedFiles+=1
set "targetFiles=!targetFiles!"%%~nF"^|"%%~xF"^|"
)
) else (
:: 追加モードの場合、すべてのファイルを処理
set /a changedFiles+=1
set "targetFiles=!targetFiles!"%%~nF"^|"%%~xF"^|"
)
)
)
:: 対象ファイルが存在しない場合は終了
if !changedFiles! equ 0 (
echo.
echo 変更可能なファイルが見つかりません。
echo.
pause
exit /b
)
:: 変更対象ファイルの一覧を表示
echo.
echo 以下のファイルの名前を変更します:
set "displayList=!targetFiles!"
:displayLoop
for /f "tokens=1,2* delims=|" %%a in ("!displayList!") do (
set "filename=%%a"
set "ext=%%b"
set "filename=!filename:"=!"
set "ext=!ext:"=!"
if "!operation!"=="1" (
:: 追加モード
if "!position!"=="1" (
set "newname=!target_string!!filename!"
) else (
set "newname=!filename!!target_string!"
)
) else (
:: 削除モード
if "!position!"=="1" (
if "!filename:~0,%len%!"=="!target_string!" (
set "newname=!filename:*%target_string%=!"
) else (
set "newname=!filename!"
)
) else (
set "newname=!filename:~0,-%len%!"
)
)
echo 元の名前: !filename!!ext!
echo 新しい名前: !newname!!ext!
echo -------------------
set "displayList=%%c"
if not "!displayList!"=="" goto displayLoop
)
:: 続行確認
set /p "confirm=これらのファイルの名前を変更しますか? (Y/N): "
if /i "!confirm!" neq "Y" (
echo.
echo 処理を中止します。
echo.
pause
exit /b
)
:: ファイル名の変更処理
echo.
set "processList=!targetFiles!"
set "successCount=0"
:renameLoop
for /f "tokens=1,2* delims=|" %%a in ("!processList!") do (
set "filename=%%a"
set "ext=%%b"
set "filename=!filename:"=!"
set "ext=!ext:"=!"
if "!operation!"=="1" (
:: 追加モード
if "!position!"=="1" (
set "newname=!target_string!!filename!"
) else (
set "newname=!filename!!target_string!"
)
) else (
:: 削除モード
if "!position!"=="1" (
if "!filename:~0,%len%!"=="!target_string!" (
set "newname=!filename:*%target_string%=!"
) else (
set "newname=!filename!"
)
) else (
set "newname=!filename:~0,-%len%!"
)
)
ren "!folder!!filename!!ext!" "!newname!!ext!" 2>nul
if !errorlevel! equ 0 (
echo "!filename!!ext!" を "!newname!!ext!" に変更しました。
set /a successCount+=1
) else (
echo "!filename!!ext!" の名前変更に失敗しました。
echo (重複するファイル名が存在するか、またはファイルが見つかりません)
)
set "processList=%%c"
if not "!processList!"=="" goto renameLoop
)
:: 処理完了メッセージの表示
echo.
echo 処理が終了しました!
echo 名前を変更したファイルの数: !successCount!
echo.
pause
exit /b
:: サブルーチン:追加位置の選択
:add_position_select
:add_position_loop
set /p "position=文字列を追加する位置を選択してください(1:先頭 / 2:末尾): "
if "!position!" neq "1" if "!position!" neq "2" (
echo 1または2を入力してください。
goto add_position_loop
)
set /p "target_string=追加する文字列を入力してください: "
exit /b
:: サブルーチン:削除位置の選択
:delete_position_select
:delete_position_loop
set /p "position=削除する文字列の位置を選択してください(1:先頭 / 2:末尾): "
if "!position!" neq "1" if "!position!" neq "2" (
echo 1または2を入力してください。
goto delete_position_loop
)
set /p "target_string=削除する文字列を入力してください: "
exit /b
:checkForbiddenAll
set "str=%~1%~2"
set "chars=/:*?^""
:: |, <, > のチェック
for %%C in ("|" "<" ">") do (
set "str2=!str!"
if "!str2!" neq "!str2:%%~C=!" (
echo.
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.
echo 禁止文字「!char!」が見つかりました。
exit /b 1
)
)
)
:: \のチェック
echo !str! | find "\" >nul && (
echo.
echo 禁止文字「\」が見つかりました。
exit /b 1
)
exit /b 0
バッチファイルの名前は何でもかまいません。
バッチファイルの使い方
このバッチファイルを実行するとファイル名が一気に変更されます。念のため、事前にバックアップをとってください。
このバッチファイルは、以下の手順で使えます。
目的フォルダの中にバッチファイルを配置します
名前を変更したいファイルがあるフォルダの中にバッチファイルを配置します。
以下の例では、「テスト」フォルダの中にバッチファイルを置きました。

バッチファイルをダブルクリックします
最初に、目的のフォルダ内にバッチファイルを配置したことを確認してください。
意図しないフォルダ内でバッチファイルを実行すると、意図しないファイルの名前が変更されるので注意してください。
今回の例では、以下のイラストのフォルダの中にバッチファイルを配置しました。

今回の例では、上のイラスト中のすべてのファイルの名前の末尾に「(秘)」を追加してみます。
処理を開始するには、上のイラストの状態で、バッチファイルをダブルクリックします。
バッチファイルをダブルクリックすると、以下のメッセージが出て、実行する操作(追加 or 削除)を選択できます。

今回は、ファイル名の末尾に「(秘)」を追加するので、1(半角)を入力してエンターキーを押します。
エンターキーを押すと、以下のメッセージが出て、文字列を追加する位置(1:先頭 / 2:末尾)を選べます。

今回は、ファイルの末尾に「(秘)」を追加するので、2(半角)を入力してエンターキーを押します。
エンターキーを押すと、以下のメッセージが出て、追加する文字列を入力できます。

今回は、ファイルの末尾に「(秘)」を追加するので、(秘)を入力してエンターキーを押します。
エンターキーを押すと、以下のメッセージが出て、変更内容を確認できます。
変更内容がよければ、Y(半角)を入力してください(中止したい場合は、Nを入力してください)。

エンターキーを押すと、以下のメッセージが出て、処理の結果が確認できます。
名前が変更されたファイルの数も確認できます。

実際のフォルダ内では、以下のように、ファイルの種類を問わず、ファイル名の末尾に「(秘)」が追加されます。

以上で操作の説明は終わりです。
上記の例では、ファイル名の末尾に「(秘)」を追加しましたが、これを削除することもできます。
以下は、ファイル名の末尾から「(秘)」を削除した結果です。

フォルダ内は、以下のようになります(ファイル名の末尾から(秘)が削除されています)。

上記の例では、ファイル名の末尾を追加/削除対象にしましたが、ファイル名の先頭を文字列の追加/削除対象にすることもできます。
以下の例は、ファイル名の先頭に「★」を追加した結果です。

フォルダ内は、以下のようになります(ファイル名の先頭に★が追加されています)。

注意点
注意点1
ファイル名の変更は、ファイルの種類に関係なく(拡張子に関係なく)、フォルダの中のすべてのファイルに適用されます。
注意点2
ファイル名の変更後と同じ名前のファイルが既に存在する場合、ファイル名の変更に失敗します(そのファイルの処理はスキップされます)。
注意点3
以下の文字は、ファイル名に使用できません(入力してもはじかれます)
\、/、:、*、?、"、<、>、|
セキュリティソフトによって処理が遮断された場合
パソコンの環境によっては、セキュリティソフトによって処理が一時的に遮断され、以下のようなメッセージ(一例です)がでる場合があります。

このような場合は、「アプリを許可する」を選んでください。
(メッセージや、アプリの許可操作は、セキュリティソフトによって異なります)
その他の関連バッチファイル
以下のバッチファイルも併用すると、より柔軟なファイル名変更ができます

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