【PR】 バッチファイル

ファイル名の一部を一括で変更/削除するバッチファイル【図解】

2025-03-02

この記事では、ファイル名の一部を一括で変更または削除するバッチファイルを紹介します。

例えば、以下のようなことができます。

使用例

変更

人事部1.docx」と「人事部2.docx」を「開発部1.docx」と「開発部2.docx」に一括変更できます

削除

「人事1.docx」と「人事2.docx」から「」を削除して「人事1.docx」と「人事2.docx」に一括変更できます

このバッチファイルは、この記事内のコードをメモ帳に貼り付けるだけで誰でも簡単に使えます。

大量のファイルの名前を一気に変更できるので便利です

陰キャくじら
陰キャくじら

バッチファイルの作成方法

このバッチファイルの作り方はシンプルです。

別の記事で紹介した「バッチファイルの作成方法」の手順3で、以下のコードをメモ帳に貼り付けるだけです。

@echo off
setlocal enabledelayedexpansion

:: V02L02

set "folder=%~dp0"
set /p "old_string=置換したい文字列を入力してください: "
set /p "new_string=新しい文字列を入力してください: "

:: 置換したい文字列が「-」で始まっているかチェック
if "!old_string:~0,1!"=="-" (
    echo.
    echo 置換したい文字列の先頭に「-」は指定できません。
    echo 再度バッチファイルを実行してください。
    echo.
    pause
    exit /b
)

:: 入力文字列のチェック
set "error=0"
call :checkForbiddenAll "!old_string!" "!new_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"
        echo !filename! | findstr /L "!old_string!" >nul
        if !errorlevel! equ 0 (
            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 "newname=!filename:%old_string%=%new_string%!"
    set "filename=!filename:"=!"
    set "newname=!newname:"=!"
    set "ext=!ext:"=!"

    :: 新しいファイル名が空になる場合はエラーメッセージを表示して終了
    if "!newname!"=="" (
        echo.
        echo エラー:変換後のファイル名が空になってしまうため、処理を中止します。
        echo 新しい文字列を指定し、再度実行してください。
        echo.
        pause
        exit /b
    )

    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 "newname=!filename:%old_string%=%new_string%!"
    set "ext=!ext:"=!"
    
    :: 新しいファイル名の禁止文字チェック
    call :checkForbiddenAll "!newname!"
    if !errorlevel! equ 1 (
        echo.
        echo 変換後のファイル名に禁止文字が含まれているため処理を中止します。
        echo.
        pause
        exit /b
    )
    
    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

: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

バッチファイルの名前は何でもかまいません。

バッチファイルの使い方(基本編)

このバッチファイルは、以下の手順で使えます。

このバッチファイルを実行するとファイル名が一気に変更されます。念のため、事前にバックアップをとってください

目的フォルダの中にバッチファイルを配置します

名前変更したいファイルがあるフォルダの中にバッチファイルを配置します。

以下の例では、「テスト」フォルダの中にバッチファイルを置きました。

ファイル名を変更したいファイルがあるフォルダの中にバッチファイルを配置した様子

バッチファイルをダブルクリックします

最初に、目的のフォルダ内にバッチファイルを配置したことを確認してください。

意図しないフォルダ内でバッチファイルを実行すると、意図しないファイルの名前が変更されるので注意してください。

今回の例では、以下のイラストのフォルダにバッチファイルを配置しました。

ファイル名を変更したいファイルがあるフォルダの中にバッチファイルを配置した様子

今回の例では、上のイラストのフォルダ内の「人事部1.docx」、「人事部2.docx」の中の「人事」を「開発」に変更してみます。

処理を開始するには、上のイラストの状態で、バッチファイルをダブルクリックします。

バッチファイルをダブルクリックすると、以下のメッセージがでて、置換したい文字列を尋ねられます。

置換したい文字列を尋ねられている状態

今回の例では、「人事」と入力しました。

置換したい文字列に「人事」と入力した状態

上のイラストのように入力できたら、エンターキーを押します。

エンターキーを押すと、以下のイラストのように、新しい文字列を尋ねられます。

新しい文字列を尋ねられている状態

上のイラストの状態で、新しい文字列を入力します。

新しい文字列に「開発」と入力した状態

今回の例では、上のイラストのように、「開発」と入力しました。

この状態でエンターキーを押すと処理が始まり、以下のメッセージがでます。

これから行われる処理の確認メッセージ

内容を確認後に、よければ、上のイラストのように「y」と入力します(Yは大文字でも小文字でもかいません)

y」と入力後にエンターキーを押すと処理が始まり、以下のようなメッセージがでます。

処理の実施結果

上のメッセージで、処理の内容と、変更されたファイルの数を確認できます。

実際のフォルダ内では、以下のイラストのように、2つのファイルの名前の一部が変更されています(「人事」→「開発」)。

フォルダ内のファイル名の「人事」部分が「開発」へと変更された状態

以上で基本操作の説明は終わりです。

バッチファイルの使い方(応用編)

ここでは、上記の例以外のファイル名変更例を示します。

部分的な変更例

部分変更例

置換対象文字列:

置換後文字列:部00

目的:ファイル名の末尾の数字1桁の連番を数字3桁の連番にしたい

部分変更例の結果

以下のイラストのように、「」→「部00」への変更によって、ファイル名末尾の連番が3桁になります。

変更前

5つのワードファイル(ファイル名変更対象のファイルの一例)

変更後

ファイル名の「部」部分が「部00」に変更された状態

部分的な削除例

部分削除例

置換対象文字列:

置換後文字列:(入力無し)

目的:ファイル名から「」を削除したい

削除例の結果

以下のイラストのように、ファイル名から「」が削除されます。

部分削除前

5つのワードファイル(ファイル名変更対象のファイルの一例)

部分削除後

ファイル名から「部」が削除された状態

この種の置換は、ファイル名から特定の文字列を除去したいときに便利です。

但し、変更後のファイル名が完全になくなる置換はエラーになります。

注意点

注意点1

ファイル名の変更は、ファイルの種類に関係なく(拡張子に関係なく)、フォルダの中のすべてのファイルに適用されます。

例えば、以下の条件でファイル名を変更をしたとします。

変更例

置換対象文字列:総務

置換後文字列:人事

以下のイラストのように、ファイルの種類に関係なくファイル名変更されま

変更前

2種類のファイルの名前変更前

変更後

2種類のファイルの名前変更後

そのため、特定の種類のファイルのみの名前を変更したい場合は、名前を変更したくない種類のファイルをフォルダから出してからバッチファイルを実行してください。

注意点2

ファイル名の変更後と同じ名前のファイルが既に存在する場合、ファイル名の変更に失敗します。

例えば、以下のようなエラーメッセージが出て、ファイル名の変更がスキップされます。

エラーメッセージ例

注意点3

以下の文字は、ファイル名に使用できません(入力してもはじかれます)

\、/、:、*、?、"、<、>、|

その他の特徴

拡張子名は、変更/削除の対象にはなりません。

バッチファイル自体の名前は、変更/削除の対象になりません。

セキュリティソフトによって処理が遮断された場合

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

セキュリティソフトによってバッチファイルの処理が遮断された場合に出るメッセージの例

このような場合は、「アプリを許可する」を選んでください。

(メッセージや、アプリの許可操作は、セキュリティソフトによって異なります)

その他の関連バッチファイル

以下のバッチファイルも併用すると、より柔軟なファイル名変更ができます

陰キャくじら
陰キャくじら

ファイル名を一括で変更するバッチファイルこちら

ファイルの拡張子を一括で変更するバッチファイルこちら

ファイル名に作成日/更新日を一括追加するバッチファイルこちら

ファイルを種類ごとに自動でフォルダ分けするバッチファイルこちら

ファイル名の先頭/末尾の文字列を追加/削除するバッチファイルこちら

パソコンデータをミラーリングしてUSBメモリにバックアップするバッチファイルこちら

是非使ってみてくださいね!

陰キャくじら
陰キャくじら
【スポンサーリンク】

-バッチファイル
-, ,